如何通过CMakeLists传参给原生工具及VSCode CMake插件构建传参
解决方案:CMake+Ninja查看编译参数及传递原生工具选项
一、VSCode CMake插件实现点击构建时显示GCC编译参数
CMAKE_VERBOSE_MAKEFILE ON仅对Makefile生成器生效,Ninja需要通过-v参数开启 verbose 输出。要让VSCode CMake插件点击构建时自动传递该参数,按以下步骤配置:
- 打开VSCode设置(快捷键Ctrl+,),搜索
cmake.buildArgs - 在配置中添加
-- -v,示例配置如下:"cmake.buildArgs": [ "-- -v" ] - 若需针对Debug/Release等不同配置单独设置,可使用
cmake.buildArgs.<config>:
配置完成后,点击CMake插件的构建按钮,就能看到GCC完整的编译参数了。"cmake.buildArgs.Debug": [ "-- -v" ]
二、通过CMakeLists.txt传递选项给原生编译/链接工具
1. 传递编译参数给GCC
- 单个目标生效:使用
target_compile_options为指定目标添加参数,比如给myapp目标开启警告并设置优化级别:add_executable(myapp main.c) target_compile_options(myapp PRIVATE -Wall -Wextra -O2) - 全局生效:通过
CMAKE_C_FLAGS(C语言)或CMAKE_CXX_FLAGS(C++)设置全局编译参数:
针对特定配置(如Debug),可使用对应配置的变量:set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra")set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g3 -O0")
2. 传递链接参数给链接器
- 单个目标生效:使用
target_link_options为指定目标添加链接参数:target_link_options(myapp PRIVATE -lm -lpthread) - 全局生效:通过
CMAKE_EXE_LINKER_FLAGS等变量设置全局链接参数:set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
内容的提问来源于stack exchange,提问作者jiong Smith
相关产品推荐
相关产品推荐

