首页 >后端开发 >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