Вместо add_library(LibraryName SHARED [files])
вы можете оставить add_library(LibraryName [files])
без STATIC
или SHARED
, а затем вы можете запустить CMake с -DBUILD_SHARED_LIBS:BOOL=OFF
или -DBUILD_SHARED_LIBS:BOOL=ON
для создания stati c или разделяемых библиотек соответственно.
Но для этого вам потребуется дважды запустить CMake и дважды скомпилировать.
Чтобы собрать как stati c, так и общий доступ, вы можете заменить это на CMakeLists.txt
:
add_library(LibraryName [files])
с:
add_library(LibraryName STATIC [files])
add_library(LibraryName_shared SHARED [files])
set_target_properties(LibraryName_shared PROPERTIES OUTPUT_NAME LibraryName)
Возможно, вам также придется продублировать другие строки (например, target_link_libraries
и install
) с целью _shared
.
Я часто использую этот метод для сборки stati c и общие библиотеки в одном go для библиотек, CMakeLists.txt
которых не предназначен для этого.
Поскольку вы добавляете отдельную цель таким образом, вы также должны иметь возможность указать отдельное имя вывода и каталог для него.