>백엔드 개발 >C++ >CMake에서 링커를 올바르게 추가하거나 플래그를 컴파일하는 방법은 무엇입니까?

CMake에서 링커를 올바르게 추가하거나 플래그를 컴파일하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 02:34:10220검색

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으로 문의하세요.