问题描述
链接二进制文件时,我可以使用 CMAKE_EXE_LINKER_FLAGS
添加一个标志(比如 -Wl,-as-needed
).但是,如果我链接一个库,则不会考虑这个额外的标志.我需要类似 CMAKE_LIB_LINKER_FLAGS
的东西,但我找不到.
When linking a binary I can use CMAKE_EXE_LINKER_FLAGS
to add a flag (let's say -Wl,-as-needed
). However, if I link a library this extra flag will not be taken into account. I would need something like CMAKE_LIB_LINKER_FLAGS
but I can't find it.
我该怎么做?
推荐答案
注意:现代 CMake 有比下面提到的更好的解决方案(详情请参阅更新).
Note: modern CMake has a better solution than mentioned below (see updates for details).
您可以使用 CMAKE_SHARED_LINKER_FLAGS,例如:
set (CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed")
这个问题看起来很相关.
UPD
感谢@Bruce Adams,他指出自从 v3.13 CMake 有 特殊命令 用于此目的:add_link_options
.
UPD 2
感谢@Alex Reinking,他指出现代 CMake 不建议使用全局设置.建议在全局设置之前优先考虑属性设置,因此应该使用 target_link_options
而不是具有全局作用域的 add_link_options
.详情请参阅亚历克斯的回答.
UPD 2
Thanks to @Alex Reinking who points out that modern CMake doesn't recommend using global settings. It is suggested to give the preference to the property settings before the global ones, so instead of add_link_options
that has a global scope, the target_link_options
should be used. See Alex's answer for details.
这篇关于如何使用 CMake 为库添加链接器标志?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!