如何获取cmake目标的依赖项列表?

时间:2014-02-25 17:10:19

标签: cmake

例如,我怎么知道我的可执行目标E是否依赖于我的库目标L?

让我们的图像E取决于L1和L2,但我不知道它们是否依赖于L。

  

target_link_libraries(E L1 L2)

我想在调用target_link_libraries之前从cmake本身获取列表,这样如果我检测到E依赖于两个不兼容的库,我可以做一些技巧。我玩了一些GetPrerequisites,但是这找到了对磁盘上现有库的依赖性,而不是正在构建的目标库。

感谢

3 个答案:

答案 0 :(得分:20)

您可以使用CMake的“依赖图生成器”。请阅读details

的链接
cmake --graphviz=test.dot . ...

答案 1 :(得分:1)

虽然graphviz输出可能更直观,但可以通过简单的启用足够等效的功能

set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1)

GLOBAL_DEPENDS_DEBUG_MODE cmake.org help

答案 2 :(得分:1)

我有一个顶级项目,其中包含多个外部子项目。在 CMakeLists.txt 文件中, 大多数目标是定制的,未列出 默认在图表中。查看文档 在 https://cmake.org/cmake/help/latest/module/CMakeGraphVizOptions.html,它说,

<块引用>

GRAPHVIZ_CUSTOM_TARGETS 设置为 TRUE 以在生成的图表中包含自定义目标。

强制性:否

默认值:假

要打开它,编写一个文件 CMakeGraphVizOptions.cmake, 并将以下行放入其中,

<块引用>

设置(GRAPHVIZ_CUSTOM_TARGETS TRUE)

希望这会有所帮助。