使用CMake来构建工程主要有以下几个主要的过程:
1.包含工程需要的头文件的所有目录:
这里有一个技巧就是通常可以通过以下代码,递归包含当前CMakeLists.txt文件所在目录下的所有包含有.h文件的目录:
2.包含工程需要的所有源文件(一般是.cpp .c 文件):
(1)包含当前CMakeLists.txt文件所在目录下的所有源文件,可以通过以下代码实现:
递归组合当前项目目录下的所有.cpp文件
(2)包含项目之外的目录的源文件:
手动给出,如果较多的话,可以使用find_path函数(搜索路径通常在1中包含)寻找,然后再拼合, 最后在add_library等中一起生成
3.链接所需要的库文件:
1.当然也可以通过以上相同的方法递归包含当前目录下的所需要的库文件;
2.手动给出库的路径,进行拼合;
总结:
对于当前工程目录,都可以采用递归的搜索方法来包含相应的目录,拼合需要的源文件,和链接库;而对于工程外的目录,
可以先包含他们所在的所有目录(通过CMAKE_INCLUDE_PATH),然后再使用find_path来进行搜索,把搜索结果拼合,最后一起进行生成。
注意:
首先在整个工程中,如果包含比较多的代码子目录,不一定需要为所有目录都编写一个CMakeLists.txt文件;即使是源代码不在工程目录下,也可以不需要为该外部的源代码目录编写CMakeLists.txt;只要指定在CMakeLists.txt中指定你需要的源文件(.cpp)的路径,就可以了。