代码之家  ›  专栏  ›  技术社区  ›  Richard Topchii

Objective-C中的条件导入取决于体系结构

  •  0
  • Richard Topchii  · 技术社区  · 7 年前

    我有一个预编译库,它只在 arm64 框架我想在可能的时候导入它,如果目标是 armv7 .

    我如何通过Objective-C实现这一点?

    我正在寻找类似于这个伪代码的东西:

    if arm64 || x86_64 {
    #import <LibraryArm64>
    } else {
    #import <Library32>
    }
    

    更新:

    这段代码给出的结果对我来说足够接近:

    #if __LP64__
    #import <A.h>
    #else
    #import "B.h"
    #endif
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   Mobile Ben    7 年前

    另一个可行的选择是使用Xcode项目设置来定义自己喜欢的自定义预处理器标志。您还可以使用它来控制链接器标志。

    在构建设置中看起来像这样。

    enter image description here

    唯一的“问题”是,对于最新版本的Xcode,您需要“帮助”Xcode完成手动操作。当您第一次尝试添加架构或SDK时(单击配置设置值最右侧的+图标),它将只显示“Any architecture | Any SDK”。

    enter image description here

    然后必须编辑项目。pbxproj并搜索“arch=*”。然后你可以用你的架构来代替它。例如,在项目中,它看起来如下所示。pbxproj文件。

                "GCC_OPTIMIZATION_LEVEL[arch=*]" = s;
    

    在这之后,您将看到它在Xcode中正确显示(就像我的第一个示例)。