CMake add_compile_options 是不是会在适当时影响链接器选项?
Posted
技术标签:
【中文标题】CMake add_compile_options 是不是会在适当时影响链接器选项?【英文标题】:Does CMake add_compile_options affect linker options when appropriate?CMake add_compile_options 是否会在适当时影响链接器选项? 【发布时间】:2015-04-17 15:03:33 【问题描述】:某些编译器选项实际上可能需要额外的 link 选项才能真正生效。例如,要启用GCC's Link Time Optimization,-flto
选项必须同时在编译命令和链接命令中传递。
有一个漂亮的builtin cmake
command 用于添加编译选项,但据我所知,链接选项没有相应的命令。即使有,当我使用的编译选项隐含它们时需要显式指定它们也会很烦人。
那么add_compile_options(-flto)
是否将-flto
添加到link 命令?如果没有,我需要直接set(LINK_FLAGS ....
吗?
【问题讨论】:
【参考方案1】:add_compile_options
和 target_compile_options
将不会传递给链接器。
你可以(ab)使用target_link_libraries
for this purpose:
以 - 开头但不是 -l 或 -framework 的项目名称被视为 链接器标志。
【讨论】:
嗯。我真的更喜欢(现在)在我的项目中全局设置选项,你说得对,在这里使用target_link_libraries
似乎是一种滥用,至少在语义上是这样。不过很好的解决方案。
....您没有任何机会设法让-flto
在您的任何项目中使用 CMake,是吗?【参考方案2】:
这可以使用add_link_options() 在 cmake 3.13 及更高版本中完成。
【讨论】:
以上是关于CMake add_compile_options 是不是会在适当时影响链接器选项?的主要内容,如果未能解决你的问题,请参考以下文章
CMake中add_compile_options/target_compile_options的使用
CMake中add_compile_options/target_compile_options的使用
CMake基础教程(17)add_compile_options添加编译选项(-g -Werror)