Задать вопрос
z0rc
@z0rc

CMake и статическая линковка

Есть небольшая самописная кроссплатформенная игрушка использующая SDL. Язык C++. Под Win32 и Win64 собирается в mingw-w64, gcc 4.5.1.

Хочется следующего: в сборках под Windows линковать зависимости статически. Не охота таскать за собой добрый десяток библиотек. Сейчас в среде сборки есть оба варианта библиотек: для статической и динамической линковки. По умолчанию gcc предпочитает линковать динамически. Для того, чтобы он выбирал статические версии библиотек требуется добавлять перед ними ключ -static. Причём потом требуется перед библиотеками, которые линкуются динамически (OpenGL), добавить ключ -dynamic.

Вопрос: как заставить/научить cmake собирать нужную командную строку?
  • Вопрос задан
  • 5694 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
VaiMR
@VaiMR
if (${CMAKE_SYSTEM_NAME} STREQUAL «Windows»)
Ваш код…
else()
Ваш код…
endif(${CMAKE_SYSTEM_NAME} STREQUAL «Windows»)

www.paraview.org/Wiki/CMake_Useful_Variables
Ответ написан
yse
@yse
Если мне не изменяет память, то для target_link_libraries без разницы статическая либина или динамическая.
Если же хотите какую-то конкретную опцию компилятору или линковщику, то в этих случаях используют set_target_properties. Там есть и COMPILE_FLAGS, и LINK_FLAGS, и куча всего прочего (см. www.cmake.org/cmake/help/v2.8.12/cmake.html#section_PropertiesonTargets)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы