I have a CMake project that I sometimes want to compile against static boost libraries, but I also want to simplify just using dynamic libraries from the cmake GUI. At my top level CMakeLists.txt, I have this:
option(USE_STATIC_BOOST "Build with static BOOST libraries instead of dynamic" NO)
Then in another file, I have the following logic installed:
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)
This seems to be fine if I start from scratch and use:
cmake ../.. -DUSE_STATIC_BOOST=YES
However, when I use
ccmake ../..
I can not get it to use static libraries no matter what I do. It seems that CMake loads the dynamic parameter into the cache at startup and changing USE_STATIC_BOOST does not switch it. I even tried disabling (Boost_LIBRARIES) to explicitly clear it. Is there a way to do what I'm trying to do?
Using x86_64 Linux and g ++ for compilation. Thanks in advance!
source share