Сборка динамических библиотек

30 сентября 2026

ID shared_libraries_building

Чтобы выполнить сборку динамической библиотеки, нужно использовать следующую CMake-команду:

add_library (<имя цели сборки библиотеки> SHARED <путь к файлу исходного кода библиотеки>...)

Также можно выполнить сборку динамической библиотеки следующей CMake-командой:

add_library (<имя цели сборки библиотеки> <путь к файлу исходного кода библиотеки>...)

При этом CMake-переменная BUILD_SHARED_LIBS должна иметь значение "истина", иначе будет выполнена сборка статической библиотеки.

По умолчанию имя файла библиотеки совпадает с именем цели сборки этой библиотеки, заданным через параметр CMake-команды add_library (). Имя файла библиотеки можно изменить, используя CMake-команду set_target_properties (). Это можно использовать, чтобы имя файла библиотеки было одинаковым для ее динамического и статического варианта.

Пример:

# Сборка статической библиотеки

add_library (somelib_static STATIC src/somesrc.cpp)

set_target_properties (somelib_static PROPERTIES OUTPUT_NAME "somelib")

# Сборка динамической библиотеки

add_library (somelib_shared SHARED src/somesrc.cpp)

set_target_properties (somelib_shared PROPERTIES OUTPUT_NAME "somelib")

Динамическая библиотека может быть скомпонована с другими статическими и динамическими библиотеками CMake-командой target_link_libraries (). При этом статические библиотеки должны быть собраны с флагом -fPIC. Этот флаг применяется при сборке статической библиотеки, если используется следующая CMake-команда:

set_property (TARGET <имя цели сборки библиотеки>... PROPERTY POSITION_INDEPENDENT_CODE ON)

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!