CMake自定义目标的依赖关系图

时间:2016-01-26 12:00:36

标签: cmake

CMake的--graphviz选项是否应该依赖于自定义目标?

示例CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8)
add_executable(target0 test.cpp)
add_dependencies(target0 target1)
add_custom_target(target1 ALL
  COMMAND echo hello
)

“cmake --graphviz = test.dot”的输出文件。将是:

digraph GG {
node [
  fontsize = "12"
];
    "node3" [ label="target0" shape="house"];
}

没有target1的痕迹。

2 个答案:

答案 0 :(得分:3)

CMake manual明确指出:

  

<强> - graphviz的= [文件]

     

生成graphviz输入文件,该文件将包含项目中的所有库和可执行依赖项。有关详细信息,请参阅CMakeGraphVizOptions.cmake的文档。

因此,据我所知,您的自定义目标既不是 - 也不是库,也不是可执行文件可以包含在结果图中。

答案 1 :(得分:2)

有些人可能会偶然发现这个问题。

现在可以使用CMake 3.17自定义目标了
https://cmake.org/cmake/help/v3.17/module/CMakeGraphVizOptions.html(相关问题17960

GRAPHVIZ_CUSTOM_TARGETS

设置为TRUE可在生成的图形中包含自定义目标。
必填:否
默认值:FALSE

GRAPHVIZ_IGNORE_TARGETS

要从生成的图形中排除的目标名称的正则表达式列表。
必填:否
默认值:空