首頁 >後端開發 >C++ >如何在CMake中正確加入連結器或編譯標誌?

如何在CMake中正確加入連結器或編譯標誌?

Linda Hamilton
Linda Hamilton原創
2024-12-26 02:34:10185瀏覽

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. 選擇一個方法: 根據您的喜好選擇提供的方法之一。一般建議使用方法 2。

按照以下步驟,您可以成功在 CMake 檔案中新增連結器或編譯標誌,並解決使用 -fexceptions 標誌啟用異常處理的問題。

以上是如何在CMake中正確加入連結器或編譯標誌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn