Gcc cmake,保留内部LIB的链接标志

Gcc cmake,保留内部LIB的链接标志,gcc,cmake,lto,Gcc,Cmake,Lto,在src/foo中,我创建了与-lwhatever链接的lib-foo add_library(foo foo.cpp) target_link_libraries(foo -lwhatever) 在src/bar中,我使用foo add_executable (bar bar.cpp) target_link_libraries(bar foo) 可能要感谢LTO,但我需要将-lwhatever添加到bar的target_link_库中,否则在编译时会丢失符号 target_link_l

在src/foo中,我创建了与-lwhatever链接的lib-foo

add_library(foo foo.cpp) 
target_link_libraries(foo -lwhatever)
在src/bar中,我使用foo

add_executable (bar bar.cpp)
target_link_libraries(bar foo)
可能要感谢LTO,但我需要将-lwhatever添加到bar的target_link_库中,否则在编译时会丢失符号

target_link_libraries(bar foo -lwhatever)

难道不能透明地完成吗

从CMake 3.0开始,CMake缺少
INTERFACE\u LINK\u FLAGS
target属性,这将使这成为可能

这里的问题实际上是,使用
target\u link\u库
指定链接器标志并不是最明智的设计决策。以
target\u compile\u options
为精神的单独命令是可取的

我认为这是CMake的疏忽。如果您有一个相关的用例,您可能会支持在未来的CMake版本中包含
target\u link\u flags
命令。如果这是您主要关心的问题,请随时联系开发人员的邮件列表

现在的另一种选择是使用
foo
的target属性来指定链接标志。然后,您还可以在指定
bar
的位置检查该属性,以避免必须对选项进行两次硬编码,从而有效地将其手动转换为
接口*
属性。但这是最好的了