cmake
Ziele erstellen
Suche…
Syntax
- add_executable (target_name [EXCLUDE_FROM_ALL] source1 [source2 ...])
- add_library (lib_name [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
Ausführbare Dateien
Um ein Build-Ziel zu erstellen, das eine ausführbare Datei erzeugt, sollte der Befehl add_executable
:
add_executable(my_exe
main.cpp
utilities.cpp)
Dadurch wird ein make my_exe
erstellt, z. B. make my_exe
für GNU make mit den entsprechenden Aufrufen des konfigurierten Compilers, um eine ausführbare Datei my_exe
aus den beiden Quelldateien main.cpp
und utilities.cpp
zu erstellen.
Standardmäßig werden alle ausführbaren Ziele hinzugefügt , um die builtin all
Ziel ( all
für GNU machen, BUILD_ALL
für MSVC).
Um auszuschließen, dass eine ausführbare Datei mit dem Standard- all
Ziel erstellt wird, kann der optionale Parameter EXCLUDE_FROM_ALL
direkt nach dem EXCLUDE_FROM_ALL
:
add_executable(my_optional_exe EXCLUDE_FROM_ALL main.cpp)
Bibliotheken
Verwenden Sie den Befehl add_library
um ein Build-Ziel zum Erstellen einer Bibliothek zu add_library
:
add_library(my_lib lib.cpp)
Die CMake-Variable BUILD_SHARED_LIBS
steuert, wann eine statische ( OFF
) oder eine gemeinsam genutzte ( ON
) Bibliothek erstellt wird, beispielsweise mit cmake .. -DBUILD_SHARED_LIBS=ON
. Sie können jedoch explizit eine gemeinsam genutzte oder eine statische Bibliothek , indem zu bauen gesetzt STATIC
oder SHARED
nach dem Zielnamen:
add_library(my_shared_lib SHARED lib.cpp) # Builds an shared library
add_library(my_static_lib STATIC lib.cpp) # Builds an static library
Die tatsächliche Ausgabedatei unterscheidet sich zwischen den Systemen. Beispielsweise wird eine gemeinsam genutzte Bibliothek auf Unix-Systemen normalerweise als libmy_shared_library.so
, unter Windows jedoch my_shared_library.dll
und my_shared_library.lib
.
add_executable
wie add_executable
EXCLUDE_FROM_ALL
vor der Liste der Quelldateien hinzu, um sie vom all
Ziel auszuschließen:
add_library(my_lib EXCLUDE_FROM_ALL lib.cpp)
Bibliotheken, die zur Laufzeit geladen werden sollen (z. B. Plugins oder Anwendungen, die etwa dlopen
), sollten MODULE
anstelle von SHARED
/ STATIC
:
add_library(my_module_lib MODULE lib.cpp)
Unter Windows gibt es beispielsweise keine .lib
( .lib
), da die Symbole direkt in die .dll
Datei exportiert werden.