gpt4 book ai didi

ios - Xcode 7 : Set Preprocessor Macros per architecture

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:20 25 4
gpt4 key购买 nike

我需要在 Xcode 中为特定架构 (arm64) 设置 Preprocessor Macro。我怎样才能做到这一点?

Stackoverflow 上也有类似的问题:Xcode 6: Set Preprocessor Macros per architecture .但在我的例子中,Xcode 7 不允许我选择架构。在 Xcode 7.1.17.3.1 上试过,结果相同:Xcode 提供的唯一架构选项是“*”(参见下图)。 Preprocessor settings section

为了以防万一,这里是我的架构设置: Architectures settings section

为了让您更好地理解为什么我真的需要这个:我使用依赖于标志集的第 3 方 C 库来告诉它是在 32 位还是 64 位平台上运行。库集成指南中的注释:“为 64 位架构构建时,必须在 Xcode 的预处理器宏部分添加 _64BIT 宏。”

所以这是我尝试过的:

  • 找到一种在 Xcode UI 中设置架构特定宏的方法(如上所述)
  • 通过将 GCC_PREPROCESSOR_DEFINITIONS[arch=*] 替换为 GCC_PREPROCESSOR_DEFINITIONS[arch=arm64] 手动修改 .pbxproj 文件(未给出期望的效果)

你知道我的 Xcode 设置有什么问题吗,为什么它不在 Preprocessor 部分显示架构选项?还是有其他方法可以根据我的情况配置宏?

最佳答案

我终于明白了。

取得的结果: _64BIT 宏将在预处理过程中添加到每个(至少今天已知的)64 位环境,无论它是 64 位设备的模拟器还是真正的 64-位设备。

解决方案是手动编辑 .pbxproj-file 如下:

            GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
"GCC_PREPROCESSOR_DEFINITIONS[arch=arm64]" = (
"$(inherited)",
_64BIT,
);
"GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64]" = (
"$(inherited)",
_64BIT,
);

所以这里是调试配置:

  • 第一部分定义了适用于所有架构的默认宏;
  • 第 2 和第 3 定义了仅应用于特定架构的自定义宏。

然后您手动完成的更改将在预处理器设置编辑器中可见。它看起来真的像是编辑器中的 Xcode 中的错误。

您会注意到我在发布问题之前已经尝试过这种方法,但我误解了我尝试的结果。问题是我已经在模拟器上测试了我的应用程序,并且在真实设备和相应的模拟器上的架构是不同的。我已将宏配置为包含在 arm64 架构中,但模拟器的实际架构是 x86_64。

如需进一步引用,this文章解释了每种架构实际发生的位置:

  • arm7:用于最旧的 iOS 7 支持设备
  • arm7s:用于 iPhone 5 和 5C
  • arm64:适用于 iPhone 5S 中的 64 位 ARM 处理器[我相信新款 iPhone 也是如此]
  • i386:用于 32 位模拟器
  • x86_64:用于64位模拟器

对于 i386 和 x86_64,这里暗示了模拟设备的“位数”,而不是您的 Mac。

关于ios - Xcode 7 : Set Preprocessor Macros per architecture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com