add_library¶

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

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.