Normal Libraries¶
add_library(<name> )
Agrega un objetivo de biblioteca llamado <name>
que se construirá a partir de los archivos fuente listados en la invocación del comando. (Los archivos fuente pueden omitirse aquí si se añaden más tarde utilizando target_sources()
.) El <name>
corresponde al nombre lógico del objetivo y debe ser globalmente único con un proyecto. El nombre real del archivo de la biblioteca construida se construye sobre la base de las convenciones de la plataforma nativa (como lib<name>.a
o <name>.lib
).
STATIC
, SHARED
, o MODULE
puede ser dado para especificar el tipo de biblioteca que se creará. Las bibliotecas STATIC
son archivos de ficheros objeto que se utilizan para enlazar otros objetivos. Las bibliotecas SHARED
se enlazan dinámicamente y se cargan en tiempo de ejecución. Las bibliotecas MODULE
son plugins que no se enlazan con otros objetivos pero que pueden cargarse dinámicamente en tiempo de ejecución utilizando una funcionalidad similar a la de dlopen. Si no se indica explícitamente el tipo es STATIC
o SHARED
en función de si el valor actual de la variable BUILD_SHARED_LIBS
es ON
. Para las bibliotecas SHARED
y MODULE
la propiedad POSITION_INDEPENDENT_CODE
targetproperty se establece en ON
automáticamente.Una biblioteca SHARED
o STATIC
puede marcarse con la propiedad FRAMEWORK
target para crear un Framework de macOS.
Si una biblioteca no exporta ningún símbolo, no debe declararse como una biblioteca SHARED
. Por ejemplo, una DLL de recursos de Windows o una C++/CLIDLL gestionada que no exporte símbolos no gestionados debería ser una biblioteca MODULE
.Esto se debe a que CMake espera que una biblioteca SHARED
tenga siempre una biblioteca de importación asociada en Windows.
Por defecto, el archivo de la biblioteca se creará en el directorio del árbol de construccióncorrespondiente al directorio del árbol de fuentes en el que se invocó el comando. Consulte la documentación de las propiedades de destino ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
yRUNTIME_OUTPUT_DIRECTORY
para cambiar esta ubicación. Consulte la documentación de la propiedad OUTPUT_NAME
target para cambiar la parte <name>
del nombre del archivo final.
Si se da EXCLUDE_FROM_ALL
se establecerá la propiedad correspondiente en el objetivo creado. Consulte la documentación de la propiedad EXCLUDE_FROM_ALL
target para más detalles.
Los argumentos de origen de add_library
pueden utilizar «expresiones de generador» con la sintaxis $<...>
. Consulte el manual cmake-generator-expressions(7)
para conocer las expresiones disponibles. Consulte el manual cmake-buildsystem(7)
para obtener más información sobre la definición de las propiedades del sistema de construcción.