Альтернативное связывание с динамическими и статическими библиотеками Boost через CMake - PullRequest
0 голосов
/ 02 июля 2019

Я занимаюсь разработкой двоичного файла, и я хотел бы сгенерировать две его версии: одна связана с динамическими библиотеками 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: -)

Кто-то спросил что-то похожее , но, к сожалению, это не совсем то же самое.

Большое спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...