我做了什么:
我有一个脚本
- 阅读一些配置文件来生成源代码片段
- 找到相关的 Objective-C 源文件并
- 将源代码的某些部分替换为步骤 1 中生成的代码。
和一个 Makefile,它有一个特殊的时间戳文件作为 make 目标,配置文件作为目标源:
SRC = $(shell find ../config -iname "*.txt")
STAMP = $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME).stamp
$(STAMP): $(SRC)
python inject.py
touch $(STAMP)
我将此 Makefile 添加为项目目标的构建阶段堆栈顶部的“运行脚本构建阶段”。
发生了什么:
脚本构建阶段在编译源代码之前运行。
但是,由于脚本在执行过程中修改了源代码,因此我需要构建twice获取构建产品的最新版本。这是我想象中会发生的事情:
- 第一次运行:Xcode 收集依赖信息 ---> 没有变化
- 第一次运行:Xcode 运行“运行脚本构建阶段”---> 源代码在 Xcode 背后被更改
- 第一次运行:Xcode 完成构建,认为不需要更新任何内容
- 第二次运行:Xcode 收集依赖信息 ---> 源已更改,需要重建!
- 第二次运行:Xcode 运行“运行脚本构建阶段”---> 一切都是最新的
- 第二次运行:Xcode 继续编译
看完之后有关构建阶段的 Xcode 文档 http://gemma.apple.com/DOCUMENTATION/DeveloperTools/Conceptual/XcodeBuildSystem/200-Build_Phases/bs_build_phases.html,我尝试添加一个源文件,该文件每次作为“运行脚本构建阶段”的输出运行时都会更新,但没有任何变化。由于我的项目中配置文件的数量可能有所不同,因此我不想指定每个输入和输出文件。
问题:
如何让 Xcode 了解“运行脚本构建阶段”期间所做的源文件更改?
Edit:
到目前为止提到的每一种技术都是矫枉过正的。繁殖史蒂夫·金 https://stackoverflow.com/users/637441/steve-kim的可见性评论:
在构建阶段选项卡中,只需将“运行脚本”步骤拖到更高的位置(例如“编译源”之前)。
在 Xcode 6 上测试
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)