Spec-Zone.ru › CMake

BUILD_SHARED_LIBS

Указывает add_library() по умолчанию создавать библиотеки SHARED вместо библиотек STATIC, если при вызове явно не указан тип библиотеки.

Вызовы add_library(), в которых явно не указан тип библиотеки, проверяют текущее значение переменной BUILD_SHARED_LIBS. Если оно истинно, тип библиотеки по умолчанию — SHARED. В противном случае по умолчанию используется STATIC.

Например, следующий код:

add_library(example ${sources})

работает так, как если бы он был записан следующим образом:

if(BUILD_SHARED_LIBS)
  add_library(example SHARED ${sources})
else()
  add_library(example STATIC ${sources})
endif()

CMake не определяет BUILD_SHARED_LIBS по умолчанию, но проекты часто создают для неё запись в кэше с помощью команды option():

option(BUILD_SHARED_LIBS "Build using shared libraries" ON)

Это предоставляет переключатель, которым пользователи могут управлять, например, с помощью cmake -D. Если вы добавляете такую опцию в проект, сделайте это в файле CMakeLists.txt верхнего уровня до любых вызовов add_library(). Обратите внимание: если включить внешние зависимости непосредственно в сборку, например с помощью FetchContent или прямого вызова add_subdirectory(), и одна из этих зависимостей содержит такой вызов option(BUILD_SHARED_LIBS ...), проект верхнего уровня также должен вызвать option(BUILD_SHARED_LIBS ...) до подключения зависимостей. Если этого не сделать, поведение при первом и последующих запусках CMake может различаться.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API