Linux下CMake简明教程(九) 添加控制选项
2023-09-14 09:15:49 时间
有时希望在编译代码时只编译一些指定的源码,可以使用cmake的option命令,主要遇到的情况分为2种:
- 本来要生成多个bin或库文件,现在只想生成部分指定的bin或库文件
- 对于同一个bin文件,只想编译其中部分代码(使用宏来控制)
第1种情况
- 假设我们现在的工程会生成2个bin文件,main1和main2,现在整体结构体如下,
.
├── bin
├── build
├── CMakeLists.txt
└── src
├── CMakeLists.txt
├── main1.c
└── main2.c
外层的CMakeLists.txt内容如下
cmake_minimum_required(VERSION 3.5)
project(demo)
option(MYDEBUG "enable debug compilation" OFF)
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
add_subdirectory(src)
这里使用了option命令,其第一个参数是这个option的名字,第二个参数是字符串,用来描述这个option是来干嘛的,第三个是option的值,ON或OFF,也可以不写,不写就是默认OFF。
然后编写src目录下的CMakeLists.txt,如下
cmake_minimum_required (VERSION 3.5)
add_executable(main1 main1.c)
if (MYDEBUG)
add_executable(main2 main2.c)
else()
message(STATUS "Currently is not in debug mode")
endif()
注意,这里使用了if-else来根据option来决定是否编译main2.c
其中main1.c和main2.c的内容如下,
然后cd到build目录下输入cmake … && make就可以只编译出main1,如果想编译出main2,就把MYDEBUG设置为ON,再次输入cmake … && make重新编译。
每次想改变MYDEBUG时都需要去修改CMakeLists.txt,有点麻烦,其实可以通过cmake的命令行去操作,例如我们想把MYDEBUG设置为OFF,先cd到build目录,然后输入cmake … -DMYDEBUG=ON,这样就可以编译出main1和main2 (在bin目录下)
相关文章
- Linux Shell参数替换
- linux学习之VNC远程控制(一)
- Linux下使用crontab执行一个shell脚本
- Linux网卡上添加多个IP
- 思维导图学 Linux Shell攻略之小试牛刀篇
- 重新点亮linux 命令树————进程的控制[二十二]
- linux部署安装nexus私服
- linux mysql 卸载,安装,测试全过程
- linux下如何更新glibc包
- Linux经常使用的命令(十) - nl
- 【Linux】linux经常使用基本命令
- L80.linux命令每日一练 -- 第11章 Linux系统管理命令 -- ntsysv和setup
- L65.linux命令每日一练 -- 第十章 Linux网络管理命令 -- ifdown和route
- L42.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- groupdel和passwd
- Linux下CMake简明教程(九) 添加控制选项
- Linux三剑客-grep命令
- conda安装r Linux系统中 linux中安装r
- Linux通过使用Sambaserver示例
- Linux/Windows双系统时间同步
- Linux 测试网速
- linux kvm 命令行安装Windows xp虚拟机
- Linux命令详解cut命令
- Linux下CMake简明教程(六)动态库和静态库的编译控制