Normal Libraries¶
add_library(<name> )
aggiunge un target di libreria chiamato <name>
da costruire dai file sorgente elencati nell’invocazione del comando. (I file sorgente possono essere omessi qui se vengono aggiunti in seguito usando target_sources()
.) Il <name>
corrisponde al nome logico del target e deve essere globalmente unico con un progetto. Il nome effettivo del file della libreria costruita è costruito sulla base delle convenzioni della piattaforma nativa (come lib<name>.a
o<name>.lib
).
STATIC
, SHARED
, o MODULE
può essere dato per specificare il tipo di libreria da creare. Le librerie STATIC
sono archivi di file oggetto da usare quando si collegano altri obiettivi. SHARED
le librerie sono collegate dinamicamente e caricate in fase di esecuzione. MODULE
le librerie sono plugin che non sono collegati in altri obiettivi, ma possono essere caricati dinamicamente in fase di esecuzione utilizzando la funzionalità dlopen-like. Se nessun tipo è dato esplicitamente il tipo è STATIC
o SHARED
in base al fatto che il valore corrente della variabile BUILD_SHARED_LIBS
sia ON
. Per le librerie SHARED
eMODULE
la POSITION_INDEPENDENT_CODE
proprietà target è impostata automaticamente su ON
.Una libreria SHARED
o STATIC
può essere contrassegnata con la FRAMEWORK
proprietà target per creare un macOS Framework.
Se una libreria non esporta alcun simbolo, non deve essere dichiarata come unaSHARED
libreria. Per esempio, una DLL di risorse di Windows o una managed C++/CLIDLL che non esporta simboli non gestiti avrebbe bisogno di essere una MODULE
libreria.Questo perché CMake si aspetta che una SHARED
libreria abbia sempre una import library associata su Windows.
Di default il file della libreria sarà creato nella directory dell’albero di costruzione corrispondente alla directory dell’albero dei sorgenti in cui è stato invocato il comando. Vedere la documentazione delle proprietà ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
eRUNTIME_OUTPUT_DIRECTORY
target per cambiare questa posizione. Vedere la documentazione della proprietà OUTPUT_NAME
target per cambiare la parte <name>
del nome finale del file.
Se viene dato EXCLUDE_FROM_ALL
la proprietà corrispondente sarà impostata sul target creato. Vedere la documentazione della proprietà EXCLUDE_FROM_ALL
target per i dettagli.
Gli argomenti sorgente di add_library
possono usare “espressioni generatrici” con la sintassi $<...>
. Vedere il manuale cmake-generator-expressions(7)
per le espressioni disponibili. Vedere il manuale cmake-buildsystem(7)
per maggiori informazioni sulla definizione delle proprietà del sistema di costruzione.