要创建用于创建库的构建目标,请使用 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 中导出。