【问题标题】:CMake Universal Binary - arch depending compile optionsCMake Universal Binary - 取决于编译选项
【发布时间】:2021-08-02 00:54:17
【问题描述】:

我正在使用 set (CMAKE_OSX_ARCHITECTURES arm64 x86_64) 构建一个 MacOS 通用二进制文件 - 到目前为止工作正常。

但是 x86_64 应该有除 arm64 之外的其他编译选项。

有没有类似的东西:

if (CURRENT_TARGET MATCHES x86_64)
    add_compile_options (-Wall -Ofast -ffast-math -fno-exceptions)
else()
    add_compile_options (-Wall -O3 -fno-exceptions)
endif()

或者任何其他解决方案?

【问题讨论】:

    标签: cmake universal-binary


    【解决方案1】:

    您可以通过XCODE_ATTRIBUTE_* 属性执行此操作,但不幸的是,这会将您的项目绑定到 XCode。 如果你有一个目标 my_target 想要添加多架构特定标志,你可以写:

    cmake_minimum_required(VERSION 3.20)
    project(example)
    
    add_executable(my_target main.cpp)
    set_target_properties(
      my_target
      PROPERTIES
        XCODE_ATTRIBUTE_PER_ARCH_CFLAGS_x86_64 "-DBUILDING_FOR_X86_64"
        XCODE_ATTRIBUTE_PER_ARCH_CFLAGS_arm64 "-DBUILDING_FOR_ARM64"
    )
    

    然后你会构建:

    $ cmake -G Xcode -S . -B build -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64"
    $ cmake --build build --config Release
    

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 2015-09-07
      • 2017-11-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多