给出一个可执行文件myExe
以及2个静态库myLib1
和myLib2
。给定以下依存关系myExe -> myLib1 -> myLib2
,应如何为myLib2
和myLib1
之间的传递依存关系建模?
似乎正确的方法可能是:
target_link_libraries(myLib2 myLib1)
但是,根据文档:
指定链接给定目标和/或其依赖项时要使用的库或标志
此外,add_dependencies
似乎不是可传递的。
所以我发现使用target_link_libraries
令人困惑,我想知道是否还有另一种“更清洁”的方式。
答案 0 :(得分:2)
对于明确的用法依赖性myLib1 -> myLib2
(即myLib1
中定义的库myLib2
使用函数),请使用>
target_link_libraries(myLib2 myLib1)
虽然target_link_libraries
对文件 myLib2.a
不起作用(因为静态库从未链接),但是当myLib2
链接到共享库或可执行文件:
target_link_libraries(myExe myLib2)
将自动将myExe
与myLib1
链接。
再次请注意,仅当在调用myLib2
的相同项目中使用target_link_libraries(myLib2 myLib1)
时,此类静态库的链接传播才有效。
尝试从另一个项目中的target_link_libraries(myExe myLib2)
链接到myLib2.a
文件,该文件不包含有关myLib2
的信息。