首先有个小示例
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
, 两者分离。
- compile options 方法 cmakecompile options方法cmake cmake_cxx_compiler compilation gpu-name defined option tool-cmake-own compiling finder cmake cmake_cxx_compiler compiler问题cmake cmake_cxx_compiler cmakelists compiler cmake tool-cmake-option tool-cmake-option option cmake tool compilation错误failure方法 options方法