【问题标题】:CMAKE - check if target is compilableCMAKE - 检查目标是否可编译
【发布时间】:2021-06-17 10:24:38
【问题描述】:

我的项目包含多个目标。我想为所有这些指定编译选项
命令“target_compile_options”

我使用来自CMake - remove a compile flag for a single translation unit 的宏获得了目标列表:

macro(apply_global_cxx_flags_to_all_targets)
    separate_arguments(_global_cxx_flags_list UNIX_COMMAND ${CMAKE_CXX_FLAGS})
    get_property(_targets DIRECTORY PROPERTY BUILDSYSTEM_TARGETS)
    foreach(_target ${_targets})
        target_compile_options(${_target} PUBLIC ${_global_cxx_flags_list})
    endforeach()
    unset(CMAKE_CXX_FLAGS)
    set(_flag_sync_required TRUE)
endmacro()

但我收到错误:

使用不可编译的目标类型调用的target_compile_options

因为有些目标不需要编译。有没有办法检查项目是否可编译?我想使用“target_compile_options,因为我需要删除一个子项目的一些选项(如提到的线程)

【问题讨论】:

    标签: cmake


    【解决方案1】:

    有没有办法检查项目是否可编译?

    是的,获取目标的类型并检查它是可执行文件还是库以及是否不是 INTERFACE 库。

    我想为所有的

    指定编译选项

    考虑在根文件夹中使用add_compile_options

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 2015-08-04
      • 2010-12-30
      相关资源
      最近更新 更多