Normal Libraries¶
add_library(<name> )
Dodaje docelow± bibliotekę o nazwie <name>
, która ma być zbudowana z plików źródłowych wymienionych w wywołaniu polecenia. (Pliki źródłowe można tu pominąć, jeśli zostaną dodane później przy użyciu target_sources()
.) <name>
odpowiada logicznej nazwie celu i musi być globalnie unikalne w danym projekcie. Rzeczywista nazwa pliku budowanej biblioteki jest konstruowana w oparciu o konwencje rodzimej platformy (takie jak lib<name>.a
lub<name>.lib
).
STATIC
, SHARED
lub MODULE
może być podane w celu określenia typu biblioteki, która ma być utworzona. Biblioteki STATIC
są archiwami plików obiektowych do użycia przy łączeniu innych celów. SHARED
biblioteki są łączone dynamicznie i ładowane w czasie wykonywania. MODULE
biblioteki są wtyczkami, które nie są łączone z innymi obiektami, ale mogą być ładowane dynamicznie w trybie runtime przy użyciu funkcji podobnych do dlopen. Jeśli typ nie jest podany jawnie, typem jest STATIC
lub SHARED
na podstawie tego, czy bieżąca wartość zmiennej BUILD_SHARED_LIBS
jest ON
. Dla bibliotek SHARED
iMODULE
właściwość POSITION_INDEPENDENT_CODE
targetproperty jest ustawiana na ON
automatycznie.Biblioteka SHARED
lub STATIC
może być oznaczona właściwością FRAMEWORK
target, aby utworzyć macOS Framework.
Jeśli biblioteka nie eksportuje żadnych symboli, nie może być zadeklarowana jako bibliotekaSHARED
. Na przykład, Windows resource DLL lub zarządzana biblioteka C++/CLIDLL, która nie eksportuje żadnych niezarządzanych symboli, musiałaby być biblioteką MODULE
. Dzieje się tak, ponieważ CMake oczekuje, że biblioteka SHARED
zawsze będzie miała przypisaną bibliotekę importu w Windows.
Domyślnie plik biblioteki zostanie utworzony w katalogu drzewa budowania odpowiadającym katalogowi drzewa źródłowego, w którym wywołano polecenie. Aby zmienić tę lokalizację, zobacz dokumentację właściwości ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
, iRUNTIME_OUTPUT_DIRECTORY
target. Zobacz dokumentację właściwości OUTPUT_NAME
target, aby zmienić <name>
część końcowej nazwy pliku.
Jeśli podano EXCLUDE_FROM_ALL
, odpowiednia właściwość zostanie ustawiona na utworzonym celu. Zobacz dokumentację właściwości EXCLUDE_FROM_ALL
target dla szczegółów.
Source arguments to add_library
may use „generator expressions” withthe syntax $<...>
. Zobacz podręcznik cmake-generator-expressions(7)
w celu uzyskania informacji o dostępnych wyrażeniach. Zobacz podręcznik cmake-buildsystem(7)
, aby dowiedzieć się więcej o definiowaniu właściwości systemu budowania.