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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow