ホームページ >バックエンド開発 >C++ >CMake でリンカーまたはコンパイル フラグを正しく追加するにはどうすればよいですか?

CMake でリンカーまたはコンパイル フラグを正しく追加するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 02:34:10188ブラウズ

How to Correctly Add Linker or Compile Flags in CMake?

CMake ファイルにリンカーを追加するかフラグをコンパイルする方法

問題ステートメント

arm-linux を使用して例外処理を行う単純なプログラムをコンパイルする場合-androideabi-g コンパイラでは、例外処理を有効にするには -fExceptions フラグを追加する必要があります。ただし、set(CMAKE_EXE_LINKER_FLAGS) または set(CMAKE_C_FLAGS) を使用して CMake を通じてこのフラグを追加しようとすると、エラーが発生します。

解決策

CMake ファイルにリンカーまたはコンパイル フラグを追加するには、次の手順に従います。手順:

  1. フラグを定義します: 次のコマンドを使用して -fExceptions フラグを定義します:

    SET(FLAG_NAME -fexceptions)
  2. CMake 変数に追加: 関連する CMake 変数にフラグを追加します。コンパイラ フラグの場合:

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

    リンカ フラグの場合:

    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG_NAME}")
    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAG_NAME}")
  3. ターゲット プロパティを使用: あるいは、ターゲット プロパティを使用することもできます。

    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. を選択してくださいメソッド: 好みに基づいて、提供されたメソッドの 1 つを選択します。通常は方法 2 をお勧めします。

これらの手順に従うことで、CMake ファイルにリンカーまたはコンパイル フラグを正常に追加し、-fExceptions フラグによる例外処理を有効にする問題を解決できます。

以上がCMake でリンカーまたはコンパイル フラグを正しく追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。