我有一个包含大量目标的Xcode项目,我希望在Ad-hoc和Debug配置下构建应用程序的设置包,但不包括Release配置.
构建阶段似乎不允许自己以配置为条件(它们显然可以以目标为条件,但是项目中目标数量加倍会使其完全无法使用).
这留下了编写自定义构建规则.我的计划是从所有目标中排除Settings.bundle,并创建一个有条件地将其复制到产品包中的构建规则,但很难找到适用的示例.
我启动的构建规则将Process设置设置为"Source files with names matching:",Settings.bundle作为名称."使用"设置为"自定义脚本:".
我的自定义脚本如下(有一点需要注意我的bash脚本是在货物崇拜级别上):
if [${CONFIGURATION} = 'Debug'] then
cp -r ${INPUT_FILE_PATH} ${DERIVED_FILES_DIR}/.
fi
Run Code Online (Sandbox Code Playgroud)
最后,我${DERIVED_FILES_DIR}/Settings.bundle列出了一个输出文件.
因为我在这里,显然它不起作用.我的第一个问题是,是否有某个地方我可以将构建规则的输出视为执行,以确保1)它实际上正在执行,以及2)我没有在某处出现愚蠢的语法错误.
另外,将输出复制到的正确位置(以环境变量的形式)是什么?
我将facebook SDK合并到一个更新中,我得到四个文件的编译器警告,在我的一个目标中,每个文件都有两个这样的警告.
[WARN]警告:没有规则处理架构armv7类型sourcecode.ch的'$(PROJECT_DIR)/ APP_NAME /Facebook.h'文件
[WARN]警告:没有规则处理架构armv6类型sourcecode.ch的'$(PROJECT_DIR)/ APP_NAME /Facebook.h' 文件
在另一个目标中,每个文件只生成一个警告,
[WARN]警告:没有规则处理架构i386类型sourcecode.ch的'$(PROJECT_DIR)/ APP_NAME /FBConnect.h' 文件
在facebook SDK的文档中,他们告诉我将i386添加到构建设置中的有效架构,但他们没有说任何关于任何"构建规则"的事情,奇怪的是我已经将相同的facebook SDK合并到另一个应用程序中而没有单一问题.我能看到的唯一区别是这个项目已经有两个目标,而且(每个)这些警告只来自其中一个.任何人都可以告诉我如何为这四个文件制定构建规则吗?我需要armv6和armv7和i386的构建规则吗?
除了不同的-info.plist和不同的.pch文件外,构建设置完全相同.我应该补充说,facebook功能在模拟器上工作正常,但在使用任一构建目标的任何测试设备中都没有.
非常感谢.
我正在尝试将一个工具集成到Xcode 4中,该工具从描述符文件生成C头.在Xcode 3中,它为具有特定扩展名的文件添加了自定义构建步骤.然后在包含它们的.m/.mm/.cpp文件之前编译这些文件.当我尝试使用Xcode 4执行此操作时,它似乎在编译其他源之后运行我的自定义步骤.这当然不起作用.有没有办法告诉Xcode以前的步骤?
这是一个简单的repro设置:

我的main.m包含一个:
#include <mytest.h>
Run Code Online (Sandbox Code Playgroud)
我已添加${DERIVED_FILE_DIR}到标题搜索路径.当我编译这个项目时,我得到以下内容:

如果我删除包含并再次构建它我得到这个:

因此规则确实有效,但执行方式为时已晚.有没有办法改变这种行为?
我在5.0版(5A1413)上找不到"添加自定义构建规则"选项.有人注意到了吗?它被移到其他地方了吗?
作为解决方法,我在任何构建规则上单击"复制到目标"并自定义它以使其自定义构建!
[回答]
构建规则 - >自定义然后选择编辑器 - >添加构建规则

在我的 Visual Studio 2010 项目中,我有文件扩展名为 .mm 的文件,需要将其编译为普通的 C++ 文件。有没有办法为新扩展或类似的东西制定构建规则?在 VS 2008 中有一些选项,但它们在 2010 中消失了。
c++ file-extension compilation visual-studio-2010 build-rules