You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CMake新手求助:如何在执行make前查看编译选项

提前查看CMake编译链接选项的几种方法

嘿,作为CMake新手能想到用SET(CMAKE_VERBOSE_MAKEFILE ON)来排查编译选项已经很赞了!想要在执行make构建前就看到-I-D-l这类编译链接参数,这里有几个实用的方法,帮你提前掌握配置细节:

  • 查看CMake缓存变量
    直接在构建目录下执行以下命令:

    cmake -LAH ./build
    

    其中-L会列出所有缓存中的CMake变量,包括CMAKE_C_FLAGSCMAKE_CXX_FLAGS(对应C/C++编译选项)和CMAKE_EXE_LINKER_FLAGS(链接选项);-AH还会附带每个变量的帮助说明,能帮你理解这些选项的作用。如果只想看基础变量,去掉Hcmake -L就行。

  • 直接读取CMakeCache.txt文件
    CMake在配置阶段会在构建目录生成CMakeCache.txt文件,里面存储了所有最终生效的配置变量。你可以直接用文本编辑器打开它,搜索CMAKE_CXX_FLAGSCMAKE_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

火山引擎 最新活动