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