add_library¶

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 FRAMEWORKtarget 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_ALLtarget 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.