CMake新手求助:如何在执行make前查看编译选项
嘿,作为CMake新手能想到用SET(CMAKE_VERBOSE_MAKEFILE ON)来排查编译选项已经很赞了!想要在执行make构建前就看到-I、-D、-l这类编译链接参数,这里有几个实用的方法,帮你提前掌握配置细节:
查看CMake缓存变量
直接在构建目录下执行以下命令:cmake -LAH ./build其中
-L会列出所有缓存中的CMake变量,包括CMAKE_C_FLAGS、CMAKE_CXX_FLAGS(对应C/C++编译选项)和CMAKE_EXE_LINKER_FLAGS(链接选项);-AH还会附带每个变量的帮助说明,能帮你理解这些选项的作用。如果只想看基础变量,去掉H用cmake -L就行。直接读取CMakeCache.txt文件
CMake在配置阶段会在构建目录生成CMakeCache.txt文件,里面存储了所有最终生效的配置变量。你可以直接用文本编辑器打开它,搜索CMAKE_CXX_FLAGS、CMAKE_SHARED_LINKER_FLAGS这类关键词,就能找到对应的-D、-lpthread、-ldl等选项,完全不需要执行make。在CMakeLists.txt中主动输出变量
如果你想在CMake配置时就实时看到关键选项,可以在CMakeLists.txt里添加message命令:message(STATUS "当前C++编译选项: ${CMAKE_CXX_FLAGS}") message(STATUS "当前链接选项: ${CMAKE_EXE_LINKER_FLAGS}") # 如果想看针对特定目标的选项,可以用get_target_property get_target_property(MY_TARGET_FLAGS my_target COMPILE_OPTIONS) message(STATUS "目标my_target的编译选项: ${MY_TARGET_FLAGS}")这样在执行
cmake ..配置项目时,终端就会直接打印出这些选项,让你在进入构建阶段前就能确认配置是否正确。使用
make -n预览构建命令
虽然这个是基于make的命令,但它不会实际执行构建,只会输出make将要执行的所有编译链接命令。在构建目录下执行:make -n你就能看到完整的编译命令行,包括所有
-I、-D、-l参数,这也是一种提前验证的方式。
内容的提问来源于stack exchange,提问作者Trung Trinh




