本篇介绍当源文件与编译文件独立存放时,如何编写CMakeLists.txt。
1只使用一个CMakeLists.txt
1.1 目录结构
文件目录结构如下,sum.c、sum.h、sub.c、sub.h和main.c的代码内容见前面的文章。
其中sum.h和sub.h放到include这个文件夹中,main.c、sum.c和sub.c放到src这个文件夹中。
在整个工程中,只有一个CMakeLists.txt:
1.2 CMakeLists.txt
cmake_minimum_required (VERSION 2.8)
project (sum_sub_test)
include_directories (include)
aux_source_directory (src SRC_LIST)
add_executable (sum_sub_test ${SRC_LIST})
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
最后一句是一个新的知识点:
EXECUTABLE_OUTPUT_PATH:CMake自带的预定义变量,表示可执行文件的存放位置
PROJECT_SOURCE_DIR:CMake自带的预定义变量,表示工程的根目录
set指令:用于定义变量,即指定可执行文件存放在工程根目录下的bin目录中
1.3 运行测试
2 顶层+子层CMakeLists.txt
一个工程,可以不只有一个CMakeLists.txt,通过层级间的管理,可以实现顶层对底层的调用。
2.1 目录结构
文件目录结构如下,sum.c、sum.h、sub.c、sub.h和main.c的代码内容见前面的文章。
其中sum.h和sub.h放到include这个文件夹中,main.c、sum.c和sub.c放到src这个文件夹中。
在整个工程中,外出有一个CMakeLists.txt,子层src目录中也有一个CMakeLists.txt:
2.2 CMakeLists.txt
2.2.1 顶层CMakeLists.txt
cmake_minimum_required (VERSION 2.8)
project (sum_sub_test)
add_subdirectory (src)
最后一句是一个新的知识点:
add_subdirectory():向当前工程添加存放源文件的子目录
这里指定的是在src目录下存放了源文件
当执行cmake指令时,就会进入src目录下去找下一级的CMakeLists.txt
所以在src目录下也必须要有一个子层的CMakeLists.txt
2.2.2 子层CMakeLists.txt
include_directories (../include)
aux_source_directory (. SRC_LIST)
add_executable(sum_sub_test ${SRC_LIST})
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
最后的set语句刚才已经见过了,就是指定可执行文件的输出位置。
2.3 运行测试
3 总结
本篇介绍了源文件与编译文件独立存放时,如何编写CMakeLists.txt。
cmake_minimum_required (VERSION 2.8)
project (sum_sub_test)
include_directories (include)
aux_source_directory (src SRC_LIST)
add_executable (sum_sub_test ${SRC_LIST})
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
新引入的知识点是最后这句,通过set来指定可执行文件的输出位置:
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
以及使用顶层+子层的CMakeLists.txt时,通过add_subdirectory来指定子层源文件的目录:
add_subdirectory (src)
并在相应的子层目录中再编写CMakeLists.txt。
-
Linux
+关注
关注
87文章
11302浏览量
209425 -
编译
+关注
关注
0文章
657浏览量
32867 -
CMake
+关注
关注
0文章
28浏览量
1271
发布评论请先 登录
相关推荐
评论