庫
要建立用於建立庫的構建目標,請使用 add_library
命令:
add_library(my_lib lib.cpp)
CMake 變數 BUILD_SHARED_LIBS
控制何時構建靜態(OFF
)或共享(ON
)庫,例如使用 cmake .. -DBUILD_SHARED_LIBS=ON
。但是,你可以通過在目標名稱後新增 STATIC
或 SHARED
來顯式設定構建共享庫或靜態庫:
add_library(my_shared_lib SHARED lib.cpp) # Builds an shared library
add_library(my_static_lib STATIC lib.cpp) # Builds an static library
系統之間的實際輸出檔案不同。例如,Unix 系統上的共享庫通常稱為 libmy_shared_library.so
,但在 Windows 上它將是 my_shared_library.dll
和 my_shared_library.lib
。
與 add_executable
一樣,在原始檔列表前新增 EXCLUDE_FROM_ALL
以將其從 all
目標中排除:
add_library(my_lib EXCLUDE_FROM_ALL lib.cpp)
設計用於在執行時載入的庫(例如使用 dlopen
之類的外掛或應用程式)應該使用 MODULE
而不是 SHARED
/ STATIC
:
add_library(my_module_lib MODULE lib.cpp)
例如,在 Windows 上,不會有匯入(.lib
)檔案,因為符號直接在 .dll
中匯出。