add_library¶

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_CODEproprietà target è impostata automaticamente su ON.Una libreria SHARED o STATIC può essere contrassegnata con la FRAMEWORKproprietà 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 MODULElibreria.Questo perché CMake si aspetta che una SHAREDlibreria 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_ALLtarget 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.