cmake - CMake Universal Binary - 取决于编译选项
问题描述
我正在使用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()
或者任何其他解决方案?
解决方案
您可以通过该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
推荐阅读
- javascript - D3.JS V5:错误:
属性 d:预期数字,“MNaN,242.20533333…” - amazon-web-services - 具有 503 服务的 Aws wordpress EC2 不可用
- javascript - Paypal Pass 项目 sku 和订单参考 ID
- java - 不能在java中使用来自sql的Varchar变量作为String
- html - 离子刷新背景是黑色而不是白色错误
- c++ - C++ 类成员函数别名模板防止大括号括起来的初始值设定项列表被识别为对/元组
- python - AttributeError:“RefVariable”对象在非急切执行模式下没有属性“_id”
- c - C中的'extern'关键字混淆
- sql - 在 SQL 中转换表时,如何应用类似于“if 语句”的自定义逻辑?
- c - ptrace PTRACE_EVENT_FORK 挂起