要建立用於建立庫的構建目標,請使用 add_library 命令:

add_library(my_lib lib.cpp)

CMake 變數 BUILD_SHARED_LIBS 控制何時構建靜態(OFF)或共享(ON)庫,例如使用 cmake .. -DBUILD_SHARED_LIBS=ON。但是,你可以通過在目標名稱後新增 STATICSHARED 來顯式設定構建共享庫或靜態庫:

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.dllmy_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 中匯出。