You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查CMake是否以--graphviz参数启动?

检测CMake是否使用--graphviz选项并添加依赖目标

CMake本身没有直接提供内置变量来判断是否传入了--graphviz选项,但可以通过以下两种可行方式实现你的需求:

方法1:自定义缓存变量配合命令行参数

  • 调用CMake时,除了--graphviz选项外,额外传入一个自定义缓存变量:
    cmake .. --graphviz=deps.dot -DUSE_GRAPHVIZ=ON
    
  • 在CMakeLists.txt中通过这个变量判断并添加目标:
    if(USE_GRAPHVIZ)
        # 添加依赖于生成的.dot文件的自定义目标
        add_custom_target(
            generate_dep_png
            COMMAND dot -Tpng deps.dot -o dependency_graph.png
            DEPENDS deps.dot
            COMMENT "Generating dependency graph image"
        )
    endif()
    

方法2:解析CMake命令行参数

CMake提供了CMAKE_COMMAND_LINE_ARGS变量,记录了调用CMake时传入的所有命令行参数。可以通过字符串匹配检测是否包含--graphviz:

# 检查命令行参数中是否包含--graphviz
string(FIND "${CMAKE_COMMAND_LINE_ARGS}" "--graphviz" GRAPHVIZ_FLAG_POS)
if(NOT GRAPHVIZ_FLAG_POS EQUAL -1)
    # 在这里添加依赖于.dot输出的目标逻辑
    add_custom_target(
        process_graphviz_output
        COMMAND ./parse_deps.sh deps.dot
        DEPENDS deps.dot
        COMMENT "Processing Graphviz dependency file"
    )
endif()

提示:这种方式无需额外传入自定义变量,即使--graphviz带输出文件名参数(如--graphviz=./output.dot),字符串匹配依然能检测到该选项的存在。

内容的提问来源于stack exchange,提问作者Benjamin Buch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:49:52