Как я могу при желании связать статическую или динамическую библиотеку повышения с помощью CMake?

У меня есть проект 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++ для компиляции. Заранее спасибо!

7
задан KyleL 27 July 2012 в 01:11
поделиться