cmake中添加compile options的几种方法
首先有个小示例
project(test_compile_option)
cmake_minimum_required(VERSION 3.14)
set(CMAKE_EXPORT_COMPILE_COMMANDS on)
add_compile_options(-Wall)
add_executable(app a.c)
target_compile_options(app PRIVATE "-g")
set(CMAKE_C_FLAGS "-g2")
可以看到compile_commands.json中的命令为,
"command": "/usr/bin/cc -g2 -Wall -g -o CMakeFiles/app.dir/a.c.o -c /home/zwl/work/daily/2023-05-25/a.c",
这里通过三种方法引入了三个编译参数,
add_compile_options
,
-- 这是方式是给这条命令后出现的target( add_executable/add_library ), 统一添加编译参数,
使用时需要注意,一定要在target的申明的前面,放在后面不生效。
-- 这个命令的参数添加效果为叠加式,如下会引入编译参数-Wall -Wall2
.
add_compile_options(-Wall)
add_compile_options(-Wall2)
-
target_compile_options
,
-- 相比前面add_compile_options
, 这个命令不同点主要有两个。一是,在target申明后用,二是,这个命令作用于特定的target,而不是对所有的target生效
-- 这个命令的参数添加效果同上,为叠加式 -
设置
CMAKE_C_FLAGS
-- 本质是操作全局变量,通过set命令完成,是否为叠加取决于使用方式,set(CMAKE_C_FLAGS "-g")
为非叠加方式,set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
为叠加式,
-- 这个全局变量在拼接最后的编译命令时最先使用。
-- 这个变量仅限于C语言,C++对应CMAKE_CXX_FLAGS
, 两者分离。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通