例如,我怎么知道我的可执行目标E是否依赖于我的库目标L?
让我们的图像E取决于L1和L2,但我不知道它们是否依赖于L。
target_link_libraries(E L1 L2)
我想在调用target_link_libraries之前从cmake本身获取列表,这样如果我检测到E依赖于两个不兼容的库,我可以做一些技巧。我玩了一些GetPrerequisites,但是这找到了对磁盘上现有库的依赖性,而不是正在构建的目标库。
感谢
答案 0 :(得分:20)
您可以使用CMake的“依赖图生成器”。请阅读details
的链接cmake --graphviz=test.dot . ...
答案 1 :(得分:1)
虽然graphviz输出可能更直观,但可以通过简单的启用足够等效的功能
set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1)
答案 2 :(得分:1)
我有一个顶级项目,其中包含多个外部子项目。在 CMakeLists.txt 文件中, 大多数目标是定制的,未列出 默认在图表中。查看文档 在 https://cmake.org/cmake/help/latest/module/CMakeGraphVizOptions.html,它说,
<块引用>GRAPHVIZ_CUSTOM_TARGETS 设置为 TRUE 以在生成的图表中包含自定义目标。
强制性:否
默认值:假
要打开它,编写一个文件 CMakeGraphVizOptions.cmake, 并将以下行放入其中,
<块引用>设置(GRAPHVIZ_CUSTOM_TARGETS TRUE)
希望这会有所帮助。