给定一个可执行文件myExe
,2个静态库myLib1
和myLib2
。给定以下依赖关系myExe -> myLib1 -> myLib2
,应如何对myLib2
和之间的传递依赖关系建模myLib1
?
看来正确的方法可能是:
target_link_libraries(myLib2 myLib1)
但是,根据文档:
指定链接给定目标和/或其依赖项时要使用的库或标志
另外,add_dependencies
似乎并不具有传递性。
因此,我觉得使用起来target_link_libraries
很混乱,我想知道是否还有另一种“更清洁”的方式。
对于明确的用法依赖性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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句