-1

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

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

编辑:我真的不明白为什么我使用 CLion 并不重要。我知道 - 目前 - 它使用 CMake 作为底层构建系统。

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

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

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

4

1 回答 1

3

一般来说,这与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()
于 2016-08-09T15:02:37.690 回答