如何使用CMAKE构建两个共享库:一个带有boost thread = multi,另一个带有boost thread = single

时间:2019-03-26 15:55:16

标签: multithreading boost cmake configuration

CMAKE中对Boost的支持似乎仅限于只找到一个USE_MULTITHREADED ON或OFF的库变体。

我的要求是提供两个共享库:一个与Boost单线程静态库链接,另一个与Boost多线程静态库链接。

我的两个库的源库是99%通用的,使用#defined内联多线程代码。

我还没有找到一个普遍接受的cmake模型,正在寻找建议。

在添加库之前或之后,我尝试了各种“ find_package(Boost ...)”的咒语。当前的解决方案是使用find_package标识boost MT库,然后为我的ST目标使用特殊情况下的ST库,该ST库对所需的每个库都有硬编码/手工制作的路径,例如

target_include_directories(stspisampledisk PRIVATE ${Boost_INCLUDE_DIRS})
target_link_options(stspisampledisk PRIVATE ../third_party/boost/ST/lib/libboost_serialization.a
                                            ../third_party/boost/ST/lib/libboost_filesystem.a
                                            ../third_party/boost/ST/lib/libboost_date_time.a)

MT链接显然更清洁:

target_link_libraries(stspisamplediskMT PRIVATE Boost::filesystem Boost::serialization Boost::date_time Threads::Threads)

0 个答案:

没有答案