Heim >Backend-Entwicklung >C++ >Wie füge ich Compiler- und Linker-Flags in CMake hinzu?

Wie füge ich Compiler- und Linker-Flags in CMake hinzu?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 16:43:17706Durchsuche

How to Add Compiler and Linker Flags in CMake?

Hinzufügen von Linker- und Compiler-Flags in CMake-Dateien

Beim Kompilieren von C-Programmen ist es oft notwendig, bestimmte Flags hinzuzufügen, um das Verhalten von zu steuern der Compiler oder Linker. In CMake können diese Flags mithilfe verschiedener Mechanismen zum Projekt hinzugefügt werden.

Kompilierungsflags hinzufügen

  • CMAKE_C_FLAGS festlegen: Dies wird festgelegt die Kompilierungsflags für C-Code.
  • Verwenden add_definitions:Flags können direkt zur Zieldefinition hinzugefügt werden, ohne CMake-Variablen zu ändern.

Beispiel:

set(CMAKE_C_FLAGS "-fexceptions")

Linker-Flags hinzufügen

  • Einstellung CMAKE_EXE_LINKER_FLAGS: Dies setzt die Linker-Flags für ausführbare Dateien.
  • Verwendung von set_target_properties: Ermöglicht das Festlegen zielspezifischer Eigenschaften, einschließlich Linker Flags.

Beispiel:

set(CMAKE_EXE_LINKER_FLAGS "-lgcov")

Spezifisches Beispiel für -fExceptions

Um das Flag -fExceptions hinzuzufügen, können Sie ein beliebiges verwenden der folgenden Methoden:

  • Methode 1 (Veraltet):
set(CMAKE_EXE_LINKER_FLAGS "-fexceptions")
  • Methode 2 (bevorzugt):
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions")
  • Methode 3 (Verwenden von Target Eigenschaften):
get_target_property(TARGET_COMPILE_FLAGS <target> COMPILE_FLAGS)
if(NOT TARGET_COMPILE_FLAGS)
  set(TARGET_COMPILE_FLAGS "")
endif()
set_target_properties(<target> PROPERTIES COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} -fexceptions")

Das obige ist der detaillierte Inhalt vonWie füge ich Compiler- und Linker-Flags in CMake hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn