Как использовать CMAKE для создания двух общих библиотек: одна с Boost Thread = Multi, другая с Boost Thread = Single - PullRequest
0 голосов
/ 26 марта 2019

Поддержка повышения в CMAKE, по-видимому, ограничена поиском только одного варианта библиотеки с USE_MULTITHREADED ON или OFF.

Мои требования состоят в том, чтобы предоставить две общие библиотеки: одну, связанную с однопоточными статическими библиотеками Boost, а другую, связанную с многопоточными статическими библиотеками Boost.

Исходная база для моих двух библиотек распространена на 99%, с многопоточным кодом #defined inline.

Я не нашел модель cmake для этого, которая является общепринятой, и ищу предложения.

Я пробовал различные заклинания "find_package (Boost ...)" до или после добавления библиотеки. Текущее решение состоит в том, чтобы find_package идентифицировал повышающие библиотеки MT, а затем в специальном случае библиотеки 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...