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

Dan*_*yol 21 cmake

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

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

target_link_libraries(E L1 L2)

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

谢谢

Pet*_*ter 24

您可以使用CMake的"依赖图生成器".请阅读此链接了解详情

cmake --graphviz=test.dot . ...
Run Code Online (Sandbox Code Playgroud)

  • “--graphviz”选项仅考虑可执行文件和库目标,但*不*自定义目标(如文档所述)。所以它并不总是有帮助。 (2认同)
  • 这并没有回答标题中提出的问题,即获取依赖项的_列表_(即,不是图表)。 (2认同)

小智 5

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

set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1)
Run Code Online (Sandbox Code Playgroud)

GLOBAL_DEPENDS_DEBUG_MODE cmake.org 帮助