【问题标题】:Specific compiler flags for specific files in XcodeXcode 中特定文件的特定编译器标志
【发布时间】:2010-05-04 11:15:00
【问题描述】:

我的任务是处理一个具有一些令人困惑的属性的项目。

该项目的性质是它不会为 iPhone 模拟器和具有相同编译设置的 iPhone 设备编译。我认为这与需要根据目标平台专门针对 x86 或 arm6/7 进行编译有关。

因此,在 Xcode 的 Build Settings 视图中查看项目的构建设置时,我无法为每个特定文件设置特定的编译器标志。但是,之前参与该项目的开发人员以某种方式声明了这一行:

CE7FEB5710F09234004DE356 /* MyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CE7FEB5510F09234004DE356 /* MyFile.m */; settings = {COMPILER_FLAGS = "-fasm-blocks -marm -mfpu=neon"; }; };

有什么方法可以在不手动编辑项目文件的情况下做到这一点?我知道编辑项目文件会导致完全破坏它,所以我宁愿不这样做,因为我显然不像以前的开发人员那样了解。

所以澄清一下,问题是:

编译模拟器时构建失败,除非我删除-fasm-blocks 标志。除非我添加 -fasm-blocks 标志,否则编译设备时构建会失败。有没有办法在不手动编辑项目文件的情况下为每个文件设置此标志?

【问题讨论】:

  • 你可以使用#if !TARGET_IPHONE_SIMULATOR来过滤掉asm代码。

标签: iphone xcode ios-simulator compiler-flags


【解决方案1】:

This Joshua Nozzi 的博文解释了如何在 Xcode 4 中执行此操作,他说:

... 在 Project Navigator 中选择您的项目,选择相关目标(您可能只有一个),然后选择 Build Phases 选项卡。展开编译源阶段和中提琴! Compiler Flags 列允许您为该目标设置每个文件的标志。

【讨论】:

    【解决方案2】:

    您可以为各个源文件定义额外的编译器标志,如下所示:

    • 首先选择你要构建的目标
    • 右键单击源文件
    • 选择“获取信息”
    • 点击“构建”标签
    • 定义额外的编译器标志

    但是,在您的情况下,听起来更好的解决方案是复制目标并有两个目标 - 一个用于实际设备,一个用于模拟器。从项目级别继承通用构建设置,并根据需要调整每个目标的构建设置。

    【讨论】:

    • 谢谢!所以这可能会回答我要问的另一个问题,即如何自动化编译标志?我可以设置在编译源阶段之前运行的运行脚本阶段,并根据目标平台环境变量的输出设置编译器标志环境变量的值。编译器平面只需要在一个特定的文件上设置,所以我认为设置两个目标并创建一个项目范围的编译器标志可能是矫枉过正...
    【解决方案3】:

    为特定文件调用 GetInfo,您可以在此处为该文件设置 Build 设置。另请参阅 XCode 项目管理指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 2011-02-20
      • 1970-01-01
      相关资源
      最近更新 更多