在 xcode 4.6 中从命令行设置 #define

2023-11-21

我试图在使用 xcodebuild 进行命令行构建时设置 #define 宏,但没有运气。

我试过了-DMYMACRO=1 and MYMACRO=1我能想到的一切都不起作用。

如何从命令行设置#define?


Roger,

您正在寻找的是一种通过命令行工具 xcodebuild 设置 GCC_PREPROCESSOR_MACROS 的方法。 xcodebuild 的手册页显示了应用这些设置的格式,但是概要部分仅将此称为“setting=value ...”

 xcodebuild [-project projectname] -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...]
 xcodebuild -workspace workspacename -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...]

最终,您可以使用此格式并了解您想要更改的实际构建设置名称,直接在命令行上设置任何构建设置值。自然,这就提出了一个问题……

如何找到构建设置名称?

很高兴你问了! Xcode 4 的侧边栏是最容易查找实际命令行构建设置名称的地方。

Annotated Build Settings Screen Clip

当寻找构建设置名称时,可以查看 Xcode 4 实用工具侧边栏的快速帮助检查器。

  1. 访问项目的“构建设置”屏幕。
  2. 通过单击 Xcode 右上角“管理器”按钮旁边的“实用程序”按钮,确保侧边栏(Xcode 称之为“实用程序”)可见。
  3. 在实用工具侧栏中,确保“快速帮助检查器”可见。

或者,使用 Option+Command+2 直接显示快速帮助检查器!

最后,您准备好找到您的构建设置:

  1. 搜索要更改的构建设置或滚动浏览构建设置列表。
  2. 单击您感兴趣的构建设置并观察快速帮助检查器更新。
  3. 快速帮助检查器的“声明”部分显示您要使用的命令行构建设置名称。

对于您最初询问的预处理器宏设置,该设置是:

GCC_PREPROCESSOR_DEFINITIONS

将其拉回您原来的问题,您只需提供 SETTING_NAME='DESIRED_VALUE' 以及 xcodebuild 命令的其余部分即可在命令行上设置此构建设置。在我将一个名为“TestApp”的快速小测试项目放在一起的情况下,我希望将预处理器宏“BKM”设置为值 1,我的 xcodebuild 命令将是:

xcodebuild -project TestApp.xcodeproj -scheme TestApp GCC_PREPROCESSOR_DEFINITIONS='${继承} BKM=1'

你为什么把 ${inherited} 放在那里?

如果您正在使用预处理器宏,那么您可能正在使用多个预处理器宏。其中一些您可能不想从命令行更改,但仍然已编码到目标或项目的构建设置中。使用“${inherited}”指示 xcodebuild 也使用在更高级别定义的构建设置,而不是仅使用我们在 xcodebuild 命令中定义的设置。在大多数情况下,您需要使用 ${inherited} 来提取您设置的任何其他配置值。

我必须将值用撇号括起来吗?

如果您想设置多个值,那么您需要将值用撇号括起来,否则如果您从命令行设置两个或多个预处理器宏,则第二个+宏将被解释为构建设置而不是预处理器宏...不太正确的行为。撇号是一种将一个设置的多个值收集在一起的方法。对于我的示例 xcodebuild 命令,我想让 xcodebuild 使用继承的预处理器宏集以及我的特定 BKM 设置,因此我将值括在撇号中,告诉 xcodebuild 将它们都视为预处理器宏。

这也适用于工作区吗?

绝对地!只需修改命令以使用 -workspace 参数而不是 -project 参数,您就可以开始工作了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 xcode 4.6 中从命令行设置 #define 的相关文章

随机推荐

  • 什么是回调函数以及如何在 OOP 中使用它

    我想使用php 简单的 HTML DOM 解析器从充满文章的页面上的每篇文章中获取图像 标题 日期和描述 当查看 API 时 我注意到它有一个 set callback 来设置回调函数 但是我不确定它的作用或我将如何使用它 在其中一个示例中
  • 使用 unique_ptr 作为值初始化静态 std::map

    如何初始化静态地图 其中值是std unique ptr static void f static std map
  • 在 ruby​​ on Rails 中被 nokogiri 转换为“\u0092”

    我有一个 html 页面 其中包含一些 html 实体 例如 Here I am not pasting whole html page content just putting issue line only html file p th
  • ASP.NET Session 对象中的实体框架对象上下文?

    我们有一个多层的 Asp NET Web 窗体应用程序 数据层有一个类叫做DataAccess它实现了IDisposable并有一个实体框架对象上下文的实例作为私有字段 该类具有许多返回各种实体集合的公共方法 并且在释放其对象上下文时将释放
  • Django:在后台发送电子邮件的最佳方式?

    我正在从 Django 发送电子邮件 使用 Webfaction 然而 这非常慢 所以我想在后台发送电子邮件 即使电子邮件尚未发送 也会向用户返回响应 关于什么是最好的方法有什么想法吗 我读过有关芹菜的内容 但设置它的步骤似乎很多 http
  • 将 EXE 作为 DLL 加载,本地 vftable

    我有一个名为test exe通常用作独立应用程序 我想将此 exe 用作另一个应用程序 app exe 中的模块 dll test exe 中的代码做了一些非常简单的事情 例如 void doTest MyClass inst new My
  • Raphael JS 沿路径文本

    我正在寻找一个例子或对一个概念的一些确认 希望在应用程序上使用 Raphael JS 并希望能够像 Illustrator 等图形设计应用程序那样扭曲文本 以下是 Chris Wilson 代码的改编版 重构为嵌入式函数 并添加了一些功能
  • 从时间格式中删除前导零

    我收到这种格式的字符串 HH mm ss 我想删除前导零 但始终保留最后四个字符 例如m ss即使m将是零 我正在格式化音频持续时间 例子 00 03 15 gt 3 15 10 10 10 gt 10 10 10 00 00 00 gt
  • ASP.NET Web api:记录/指定服务

    我一直在看asp net 网络 API 而且我喜欢实现实用 Web 服务的简单性 但是 我如何记录 指定这样实现的服务的接口 例如 是否有任何规范我可以传递或生成给没有 NET 背景的 Java 人员 让他轻松调用和使用服务 我可以给 ja
  • 如何让 R 使用更多 CPU 使用率?

    我注意到 R 并没有使用我所有的 CPU 我想大幅增加它 高达 100 我不希望它只是并行化几个函数 我希望 R 使用更多的 CPU 资源 我正在尝试使用 lp 函数运行纯 IP 设置打包程序 目前 我运行 Windows 我的计算机上有
  • Android - 如何知道一个视图是否覆盖了RelativeLayout中的另一个视图

    我有一个RelativeLayout 里面有两个视图 view1 每十秒在布局内的随机位置重新创建一次 view2 处于静态位置并且比 view1 大 我想知道第一个视图何时在第二个视图区域内创建 我该怎么做 我目前正在尝试此代码 但 id
  • 如何使用WMI获取USB设备的盘符

    我需要跟踪 C 应用程序中的 USB 插入和移除事件 因此我根据 SO 上的其他问题提出了以下想法 我无法使用这个方法 var drives DriveInfo GetDrives Where drive gt drive IsReady
  • 为什么以及何时 WHERE 子句中带条件的 LEFT JOIN 不等于 ON 中的相同 LEFT JOIN? [复制]

    这个问题在这里已经有答案了 我遇到了一个非常令人困惑的情况 这让我质疑我对 SQL Server 中联接的所有理解 SELECT t1 f2 FROM t1 LEFT JOIN t2 ON t1 f1 t2 f1 AND cond2 AND
  • 让logstash向不同的索引添加不同的输入

    我已经设置了logstash来使用嵌入式elasticsearch 我可以记录事件 我的logstashconf看起来是这样的 https gist github com khebbie 42d72d212cf3727a03a0 现在我想添
  • 如何使“python setup.py install”安装源而不是egg文件?

    我曾经跑步python setup py install在 python 项目中 它只会将源移动到site packages 但有时它会 mv anegg文件至site packages usr bin env python encodin
  • 如何判断指针指向的是堆还是栈?

    Example bool isHeapPtr void ptr int iStack 35 int ptrStack iStack bool isHeapPointer1 isHeapPtr ptrStack Should be false
  • 如何将 Font Awesome 与 MPDF 一起使用?

    我正在使用 Zend Framework 并使用 mpdf 创建 PDF 我正在尝试使用 fontawesome 来表示某些文章 但是 fontawesome 的字体无法正确呈现 下面是代码 stylesheet file get cont
  • 如何使用fontconfig获取字体列表(C/C++)?

    我听说 fontconfig 是在 Linux 中获取字体的最佳选择 不幸的是 我一直在浏览他们的开发人员文档 但我完全不知道我在做什么 看来没有简单的函数来获取系统字体列表 我必须执行模式搜索 对吗 简而言之 使用 fontconfig
  • 单个 CALayer 可以用作多个其他层的掩模吗?

    我在文档中找不到任何指示单个 CALayer 或子类 是否可以用作mask多个其他层的属性 是否可以 还是未定义 我的实验表明不能 它将最终作为其附加到的最后一个图层的蒙版 并且它被指定为蒙版的任何先前图层都将恢复为蒙版的默认值
  • 在 xcode 4.6 中从命令行设置 #define

    我试图在使用 xcodebuild 进行命令行构建时设置 define 宏 但没有运气 我试过了 DMYMACRO 1 and MYMACRO 1我能想到的一切都不起作用 如何从命令行设置 define Roger 您正在寻找的是一种通过命