Как включить LinkTimeOptimization с помощью Clion?

Я хотел бы оптимизировать время ссылки моей программы. Где я должен ввести его, чтобы включить его?

Если это имеет значение (надеюсь, что нет): я использую MinGW-w64 5.0 на Windows.

редактировать: я действительно не понимаю, почему это не имеет значения, что я использую CLion. Я знаю, что пока что он использует CMake в качестве базовой системы сборки.

Но а) В будущем CMake не будет единственной системой сборки, которую будет поддерживать CLion ( см. Здесь), поэтому обращение к CMake не решит саму проблему.

И б) для настройки CMakeLists.txt все равно потребуется, чтобы я настраивал каждый проект индивидуально. Я попросил способ настроить IDE, чтобы он сделал это для меня.

Я также не считаю, что это неразрешимая проблема как таковая. Там может быть конфигурация или плагин, который делает свое дело. Я не смог его найти... но это не значит, что мой вопрос не подлежит ответу.

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()
Другие вопросы по тегам