仅为某些架构定义预处理器宏

Posted

技术标签:

【中文标题】仅为某些架构定义预处理器宏【英文标题】:Defining preprocessor macro for certain architecture only 【发布时间】:2016-12-01 16:30:28 【问题描述】:

默认情况下,Xcode 会针对多种架构编译我的项目:arm64armv7armv7s。现在我想为arm64 架构定义一个预处理器宏。我该怎么做?

在 Xcode 中使用 Preprocessor macros 字段将不起作用,因为该字段中的预处理器宏将为 所有 架构定义。但是如何才能仅为某些架构定义自定义预处理器宏?

【问题讨论】:

您可以使用***.com/questions/21639128/… 来检测架构并设置#define 如果您在arm64 中?或者这样:***.com/questions/39076166/… 通过手动编辑项目文件。 谢谢,arm64 只是一个例子。我当然知道如何检测 64 位,但我通常需要能够为某些架构设置预处理器宏,而不仅仅是arm64,所以我需要一个通用的解决方案。手动编辑项目文件似乎可以解决问题,但如果有的话,我当然更喜欢侵入性较小的解决方案。 【参考方案1】:

我有类似的问题,解决了这样的问题(在 *.xcodeproj 中)

            HEADER_SEARCH_PATHS = (
                "$(PROJECT_DIR)/../../../_result/include",
            );
            "HEADER_SEARCH_PATHS[arch=arm64]" = (
                "$(PROJECT_DIR)/../../../_result/include/iphoneos_arm64",
            );

【讨论】:

以上是关于仅为某些架构定义预处理器宏的主要内容,如果未能解决你的问题,请参考以下文章

使用预处理器宏组成另一个宏调用

用引号定义C ++预处理器宏[重复]

我可以附加到预处理器宏吗?

预处理器宏更改两个目标

使用预处理器宏进行条件编译 Xcode

xctest - 预处理器宏