CMake通用二进制文件-依赖于编译选项

ie3xauqp  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(220)

我正在使用set (CMAKE_OSX_ARCHITECTURES arm64 x86_64)构建一个MacOS通用二进制文件-到目前为止运行良好。
但是x86_64应该有除arm 64之外的其他编译选项。
有没有类似这样的东西:

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

或者其他解决方案?

i2loujxw

i2loujxw1#

你可以通过XCODE_ATTRIBUTE_*属性来实现,尽管这会很不幸地将你的项目绑定到XCode。如果你有一个目标my_target,你想在其中添加多个特定于arch的标志,你可以写:

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

相关问题