Я занимаюсь разработкой двоичного файла, и я хотел бы сгенерировать две его версии: одна связана с динамическими библиотеками Boost, а другая - со статическими. Пока что я могу сделать это в два этапа, передав внешнюю команду -DUSE_STATIC_BOOST=<true|false>
моей команде CMake:
if(USE_STATIC_BOOST)
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.70 REQUIRED <list of Boost libraries I need>)
add_executable(BINARY_STATIC ${BINARY_SRCS})
target_link_libraries(BINARY_STATIC ${Boost_LIBRARIES})
else()
set(Boost_USE_STATIC_LIBS OFF)
find_package(Boost 1.70 REQUIRED <list of Boost libraries I need>)
add_executable(BINARY_DYNAMIC ${BINARY_SRCS})
target_link_libraries(BINARY_DYNAMIC ${Boost_LIBRARIES})
endif()
но я бы хотел сделать это за один раз, без необходимости флага -DUSE_STATIC_BOOST
.
Итак, мой вопрос: есть ли способ явного связывания со статическими или динамическими библиотеками Boost? Так что мой скрипт CMake может выглядеть так:
find_package(Boost 1.70 REQUIRED <list of Boost libraries I need>)
add_executable(BINARY_STATIC ${BINARY_SRCS})
target_link_libraries(BINARY_STATIC ${Boost_STATIC_LIBRARIES})
add_executable(BINARY_DYNAMIC ${BINARY_SRCS})
target_link_libraries(BINARY_DYNAMIC ${Boost_DYNAMIC_LIBRARIES})
Очевидно, я не нашел никаких Boost_STATIC_LIBRARIES
или Boost_SHARED_LIBRARIES
переменных кэша в FindBoost.cmake
: -)
Кто-то спросил что-то похожее , но, к сожалению, это не совсем то же самое.
Большое спасибо за вашу помощь.