通过CMake与Boost动态和静态库的备用链接

时间:2019-07-02 20:52:56

标签: boost cmake

我正在开发一个二进制文件,我想生成它的两个版本,一个版本与动态Boost库链接,另一个与静态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_LIBRARIESFindBoost.cmake缓存变量:-)

Somebody asked something similar,但不幸的是并不完全相同。

非常感谢您的帮助。

0 个答案:

没有答案