CMake基础篇(八)——构建更复杂的工程
CMake基础篇(八)——构建更复杂的工程
前言:
本篇文章介绍CMake如何构建更复杂的工程。
1 带有多个源文件
如果一个工程有多个源文件需要编译,而源文件都在工程根目录下,只需要在CMake中增加源文件依赖的描述即可。目录结构如下。
shell
1 | ╰─ tree |
main.c。
c
1 |
|
alg.c。
c
1 |
|
alg.h。
c
1 | extern int Add(int Num1, int Num2); |
CMakeLists.txt。
cmake
1 | cmake_minimum_required(VERSION 3.0) |
在 add_executable 函数里添加列出所有源文件。如果一个目录下源文件非常多,一一列出过于繁琐,而且将来源文件的数量和名称可能变更,可以使用 aux_source_directory 函数自动搜索某个目录下的所有源文件,形成列表赋值到变量中。CMakeLists.txt改进后如下。
cmake
1 | cmake_minimum_required(VERSION 3.0) |
2 源码文件在不同路径
通常项目的源码会根据框架设计、模块设计、类别等放到不同路径下。目录结构如下。
shell
1 | ╰─ tree |
CMakeLists.txt。
shell
1 | cmake_minimum_required(VERSION 3.0) |
include_directories 函数用于添加头文件路径, aux_source_directory 函数用于添加源文件路径,但一次只能一个路径。
cmake
1 | cmake_minimum_required(VERSION 3.0) |
main.c。
c
1 |
|
main.c。
c
1 |
3 链接库文件
CMake加载动态静态库很简单。目录结构如下。
shell
1 | ╰─ tree |
根目录下的 CMakeLists.txt 内容如下。
cmake
1 | cmake_minimum_required(VERSION 3.0) |
find_library 函数用于在指定路径下查找指定库文件,并将文件的绝对路径返回到变量第一个变量中。第二个参数是库文件名,库文件名可以不写后缀,默认是查找动态库文件,建议加上后缀(函数是根据后缀名来识别链接动态或静态库)。第三个参数是查找的路径。 target_link_libraries 函数用于连接库文件。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 OnlyCalm's Blog!
评论
ValineGitalk







