CMake - BUILD_SHARED_LIBS для отдельных библиотек - PullRequest
0 голосов
/ 27 ноября 2018

Существует ли переменная типа BUILD_SHARED_LIBS, но только для одной цели (например, MyLib_BUILD_SHARED, где MyLib - это библиотека).

Я знаю, что могу вручную определить, является ли библиотека статической или динамической, используя STATIC илиDYNAMIC в команде add_library, но мне нужен параметр, который может быть установлен пользователем вместо решения с жестким кодом.

С уважением, Лекс

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Я считаю, что принятый ответ не совсем точен, потому что вопрос был конкретно об установке этой опции для цели single .Сделав BUILD_SHARED_LIBS видимым в качестве опции, вы управляете свойством STATIC / SHARED всех целевых объектов библиотеки по умолчанию.

Это правда, что нет встроенногоособенность сделать это для одной цели.Вы должны добавить это сами.Примерно так:

option(MyLib_SHARED_LIBS "" ON)
if (MyLib_SHARED_LIBS)
   add_library(MyLib SHARED "")
else()
   add_library(MyLib STATIC "")
endif()
0 голосов
/ 27 ноября 2018

В CMake нет встроенного метода, о котором я знаю.Выберите опцию, которая имеет преимущество в том, что она также документирует намерение для пользователей.

option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" ON)

Затем выполните команду add_library в соответствии с установленной опцией.

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