У меня есть проект CMake, который я иногда хочу скомпилировать со статическими библиотеками повышения, но я также хочу упростить простое использование динамических библиотек из графического интерфейса cmake. В моем верхнем уровне CMakeLists.txt у меня есть это:
option(USE_STATIC_BOOST "Build with static BOOST libraries instead of dynamic" NO)
Затем в другом файле у меня настроена следующая логика:
if(USE_STATIC_BOOST)
unset(Boost_LIBRARIES)
message(WARNING "Linking against boost static libraries")
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost REQUIRED COMPONENTS thread program_options system)
else(USE_STATIC_BOOST)
unset(Boost_LIBRARIES)
message(WARNING "Linking against boost dynamic libraries")
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost REQUIRED COMPONENTS thread program_options system)
endif(USE_STATIC_BOOST)
Кажется, это работает нормально, если я начну с нуля и использую:
cmake../.. -DUSE_STATIC_BOOST=YES
Однако, когда я использую
ccmake../..
Я не могу заставить его использовать статические библиотеки, что бы я ни делал. Кажется, что CMake загружает динамический параметр в кеш при запуске, и изменение USE _STATIC _BOOST не переключает его. Я даже пытался отключить (Boost _LIBRARIES ), чтобы явно очистить его. Есть ли способ сделать то, что я пытаюсь сделать?
Использование x86 _64 Linux и g++ для компиляции. Заранее спасибо!