Cmake学习总结(二)
说明:
aux_source_directory(. SRC_LIST):表示是把当当前目录下的所有源文件都添加到源列表变量里面去,最后用add_executable(main ${SRC_LIST})把所有有用的源文件加工成目标文件main。不过这方法也有他的缺点,就是把当前目录下的源文件都添加到变量SRC_LIST,如果我们不需要一些没有用的文件(只要拿到所需的源文件就行),可以进行这样操作:
cmake_minimum_required(VERSION 2.8)
project(main)
set(SRC_LIST
./main.c
./test1.c
./test2.c
)
add_executable(main ${SRC_LIST})
这样是能够通过编译的:
root@txp-virtual-machine:/home/txp/test# cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/txp/test
root@txp-virtual-machine:/home/txp/test# make
[100%] Built target main
2、在上面的例子中,我们会发现同一目录下源文件比较乱,所以在cmake里面有这样的规则,可以把相同类型以及相关的源文件放到同一个目录,比如说,现在我在test目录下创建test1和test2两个目录文件,并同时把test1.c、test1.h、test2.c、test2.h分别放到这两个目录下去:
root@txp-virtual-machine:/home/txp/test# mkdir -p test1 test2
root@txp-virtual-machine:/home/txp/test# ls
@ CMakeFiles main test1 test2
1 cmake_install.cmake main.c test1.c test2.c
CMakeCache.txt CMakeLists.txt Makefile test1.h test2.h
然后把相关文件一到这两个目录文件下去:
root@txp-virtual-machine:/home/txp/test# mv test1.c test1.h test1
root@txp-virtual-machine:/home/txp/test# mv test2.c test2.h test2
root@txp-virtual-machine:/home/txp/test# ls
@ CMakeCache.txt cmake_install.cmake main Makefile test2
1 CMakeFiles CMakeLists.txt main.c test1
root@txp-virtual-machine:/home/txp/test# tree
├── cmake_install.cmake
├── CMakeLists.txt
├── main
├── main.c
├── Makefile
├── test1
│ ├── test1.c
│ └── test1.h
└── test2
├── test2.c
└── test2.h
然后这个时候要修改CMakeLists.txt里面的规则属性了:
cmake_minimum_required(VERSION 2.8)
project(main)
include_directories(test1 test2)
aux_source_directory(test1 SRC_LIST)
aux_source_directory(test2 SRC_LIST1)
add_executable(main main.c ${SRC_LIST} ${SRC_LIST1})
图片新闻
技术文库
最新活动更多
-
即日-12.26立即报名>>> 【在线会议】村田用于AR/VR设计开发解决方案
-
1月8日火热报名中>> Allegro助力汽车电气化和底盘解决方案优化在线研讨会
-
1月9日立即预约>>> 【直播】ADI电能计量方案:新一代直流表、EV充电器和S级电能表
-
即日-1.14火热报名中>> OFweek2025中国智造CIO在线峰会
-
即日-1.16立即报名>>> 【在线会议】ImSym 开启全流程成像仿真时代
-
即日-1.20限时下载>>> 爱德克(IDEC)设备及工业现场安全解决方案
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论