如何使用Clion启用LinkTimeOptimization?

时间:2016-08-09 13:18:30

标签: cmake clion lto

我希望我的程序链接时间得到优化。我必须在哪里输入才能启用它?

如果重要(我希望不重要):我在Windows上使用MinGW-w64 5.0。

编辑:我真的不明白为什么我使用CLion无关紧要。我知道 - 现在 - 它使用CMake作为底层构建系统。

但是a)将来CMake不会是CLion支持的唯一构建系统(See here),因此引用CMake本身并不能解决问题。

并且b)调整CMakeLists.txt仍然需要我单独配置每个项目。我问了一种配置IDE的方法,所以它会为我做。

我也不认为这本身就是一个无法解决的问题。可能有配置或插件可以解决这个问题。我没有找到它......但这并不意味着我的问题无法回答。

1 个答案:

答案 0 :(得分:1)

一般来说,这与 CLion 无关,但是是CMake的问题。

然而,问题在于编译器和链接器之间的适当标志不同。

当您使用MinGW时,据我所知,这意味着GCC,您可以尝试以下作为一个粗略的起点:

if(${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
    set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -flto")
    set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -flto")
    set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -flto")
endif()

但是,我建议使用目标属性(假设您将目标MyTarget定义为可执行文件或共享库):

if(${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
  set_property(TARGET MyTarget
               APPEND PROPERTY LINK_FLAGS -lto)
endif()