Как включить 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()