我正在开发一个二进制文件,我想生成它的两个版本,一个版本与动态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_LIBRARIES
或FindBoost.cmake
缓存变量:-)
Somebody asked something similar,但不幸的是并不完全相同。
非常感谢您的帮助。