如何在CMake中建立静态库之间的传递依赖关系模型?

时间:2018-12-07 15:40:02

标签: cmake

给出一个可执行文件myExe以及2个静态库myLib1myLib2。给定以下依存关系myExe -> myLib1 -> myLib2,应如何为myLib2myLib1之间的传递依存关系建模?

似乎正确的方法可能是:

target_link_libraries(myLib2 myLib1)

但是,根据文档:

  

指定链接给定目标和/或其依赖项时要使用的库或标志

此外,add_dependencies似乎不是可传递的。

所以我发现使用target_link_libraries令人困惑,我想知道是否还有另一种“更清洁”的方式。

1 个答案:

答案 0 :(得分:2)

对于明确的用法依赖性myLib1 -> myLib2(即myLib1中定义的库myLib2 使用函数),请使用

target_link_libraries(myLib2 myLib1)

虽然target_link_libraries文件 myLib2.a不起作用(因为静态库从未链接),但是当myLib2链接到共享库或可执行文件:

target_link_libraries(myExe myLib2)

将自动将myExemyLib1链接。


再次请注意,仅当在调用myLib2相同项目中使用target_link_libraries(myLib2 myLib1)时,此类静态库的链接传播才有效。

尝试从另一个项目中的target_link_libraries(myExe myLib2)链接到myLib2.a文件,该文件不包含有关myLib2的信息。