Normal Libraries¶
add_library(<name> )
Adaugă o țintă de bibliotecă numită <name>
pentru a fi construită din fișierele sursă listate în apelul de comandă. (Fișierele sursă pot fi omise aici dacă sunt adăugate ulterior folosind target_sources()
.) <name>
corespunde numelui țintei logice și trebuie să fie unic la nivel global în cadrul unui proiect. Numele de fișier real al bibliotecii construite este construit pe baza convențiilor platformei native (cum ar fi lib<name>.a
sau<name>.lib
).
STATIC
, SHARED
sau MODULE
poate fi dat pentru a specifica tipul de bibliotecă ce urmează a fi creată. Bibliotecile STATIC
sunt arhive de fișiere obiect pentru a fi utilizate la crearea de legături cu alte obiective. Bibliotecile SHARED
sunt legate dinamic ș i încărcate în timpul execuției. MODULE
bibliotecile sunt pluginuri care nu sunt legate în alte obiective, dar care pot fi încărcate dinamic în timpul execuției, folosind o funcționalitate de tip dlopen. În cazul în care nu se indică în mod explicit nici un tip, tipul este STATIC
sau SHARED
în funcție de valoarea curentă a variabilei BUILD_SHARED_LIBS
care este ON
. Pentru bibliotecile SHARED
șiMODULE
, proprietatea țintă POSITION_INDEPENDENT_CODE
este setată automat la ON
.O bibliotecă SHARED
sau STATIC
poate fi marcată cu proprietatea FRAMEWORK
target pentru a crea un cadru macOS.
Dacă o bibliotecă nu exportă niciun simbol, nu trebuie declarată ca bibliotecăSHARED
. De exemplu, o DLL de resurse Windows sau o bibliotecă gestionată C++/CLIDLL care nu exportă simboluri negestionate ar trebui să fie o bibliotecă MODULE
.Acest lucru se datorează faptului că CMake se așteaptă ca o bibliotecă SHARED
să aibă întotdeauna o bibliotecă de import asociată pe Windows.
În mod implicit, fișierul de bibliotecă va fi creat în directorul arborelui de construcțiecorespunzător directorului arborelui sursă în care a fostinvocată comanda. Consultați documentația proprietăților țintă ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
șiRUNTIME_OUTPUT_DIRECTORY
pentru a modifica această locație. A se vedea documentația proprietății țintă OUTPUT_NAME
pentru a schimba partea <name>
din numele fișierului final.
Dacă se dă EXCLUDE_FROM_ALL
, proprietatea corespunzătoare va fi setată pe ținta creată. A se vedea documentația proprietății EXCLUDE_FROM_ALL
target pentru detalii.
Argumentele sursă pentru add_library
pot folosi „expresii generatoare” cu sintaxa $<...>
. A se vedea manualul cmake-generator-expressions(7)
pentru expresiile disponibile. A se vedea manualul cmake-buildsystem(7)
pentru mai multe detalii privind definirea proprietăților sistemului de construcție.
.