Cmake 自学笔记(linux)(四)

来源:互联网 发布:vue.js nexttick用法 编辑:程序博客网 时间:2024/06/06 02:54

前言:观察文件夹下的文件,发现源代码(main .h .c)放在同一个路径下,还是不太正规,怎么办呢?分开放呗…….当然,分开的这个过程由我们自己完成

我们期望的结构:
这里写图片描述

即main.c在src下(src=source code),头文件和他的.c在库文件夹下。并且我们发现cmakelists多达三个,都需要我们去自己写,但是并不困难。

1.在主文件夹下新建src,libhello,build三个文件夹,以及一个顶层cmakelists.txt.然后在src中新建一个main和一个cmakelists,在libhello中新建一个hello.c和一个hello.h,还有一个cmakelists。

2.修改顶层cmakelists的内容

这里写图片描述

说明:使用 add_subdirectory 告诉cmake去子目录寻找新的CMakeList.txt 子文件,括号中的内容就是子cmakelists所在的文件夹

3.修改src中的cmakelists的内容:

这里写图片描述

说明:include_directories,用来指明头文件所在的路径。注意,PROJECT_SOURCE_DIR必须大写。另外,说下我个人对./的理解,./我理解为该cmakelists文件所在的当前路径,而不是这个项目的根目录。而项目的根目录是${PROJECT_SOURCE_DIR}.

4.修改libhello中的cmakelists的内容:

这里写图片描述

很简单,就是一个添加库的命令。

5.全部完成后,在build文件夹下运行cmake.. ,然后运行make,此时注意生成的可执行文件不再是在build下,而是在build里面的src中。因为build中的目录默认和源代码中结构一样,源码中的目录是src和libhello,所以在build中生成了src和libhello。

原创粉丝点击