Heim >Backend-Entwicklung >C++ >Wie füge ich Linker- oder Kompilierungsflags in CMake korrekt hinzu?

Wie füge ich Linker- oder Kompilierungsflags in CMake korrekt hinzu?

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 02:34:10188Durchsuche

How to Correctly Add Linker or Compile Flags in CMake?

So fügen Sie Linker hinzu oder kompilieren Flags in einer CMake-Datei

Problemstellung

Beim Kompilieren eines einfachen Programms mit Ausnahmebehandlung unter Verwendung von arm-linux -androideabi-g-Compiler muss das Flag -fExceptions hinzugefügt werden, um die Ausnahmebehandlung zu ermöglichen. Versuche, dieses Flag über CMake mit set(CMAKE_EXE_LINKER_FLAGS) oder set(CMAKE_C_FLAGS) hinzuzufügen, führen jedoch zu einem Fehler.

Lösung

Um Linker- oder Kompilierungsflags in einer CMake-Datei hinzuzufügen, befolgen Sie diese Schritte:

  1. Definieren Sie die Flags:Verwenden Sie die folgenden Befehle, um das Flag -fExceptions zu definieren:

    SET(FLAG_NAME -fexceptions)
  2. An CMake-Variablen anhängen:Fügen Sie das Flag zu den relevanten CMake-Variablen hinzu . Für Compiler-Flags:

    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG_NAME}")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG_NAME}")

    Für Linker-Flags:

    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG_NAME}")
    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAG_NAME}")
  3. Zieleigenschaften verwenden: Alternativ können Sie Zieleigenschaften verwenden:

    get_target_property(TEMP ${TARGET} COMPILE_FLAGS)
    if(TEMP STREQUAL "TEMP-NOTFOUND")
      SET(TEMP "")
    else()
      SET(TEMP "${TEMP} ")
    endif()
    SET(TEMP "${TEMP}${FLAG_NAME}")
    set_target_properties(${TARGET} PROPERTIES COMPILE_FLAGS ${TEMP})
  4. Wählen Sie eine Methode: Wählen Sie je nach Ihren Vorlieben eine der bereitgestellten Methoden aus. Methode 2 wird im Allgemeinen empfohlen.

Durch Befolgen dieser Schritte können Sie erfolgreich Linker- oder Kompilierungsflags in einer CMake-Datei hinzufügen und das Problem der Aktivierung der Ausnahmebehandlung mit dem Flag -fExceptions lösen.

Das obige ist der detaillierte Inhalt vonWie füge ich Linker- oder Kompilierungsflags in CMake korrekt 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