相关疑难解决方法(0)

Xcode:在每次直接修改源代码的构建之前运行脚本

我做了什么:

我有一个脚本

  1. 阅读一些配置文件以生成源代码片段
  2. 查找相关的Objective-C源文件和
  3. 用步骤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)
Run Code Online (Sandbox Code Playgroud)

我在项目目标的构建阶段堆栈之上添加了这个Makefile作为"运行脚本构建阶段".

发生了什么:

在编译源代码之前运行了脚本构建阶段.

但是,由于脚本在执行期间修改了源代码,因此我需要构建两次以获取最新版本的构建产品.这是我想象中发生的事情:

  1. 第一次运行:Xcode收集依赖信息--->没有变化
  2. 第一次运行:Xcode运行"运行脚本构建阶段"--->源代码在Xcode的后面更改
  3. 第一次运行:Xcode完成构建,认为没有什么需要更新
  4. 第二次运行:Xcode收集依赖信息--->源已更改,需要重建!
  5. 第二轮:Xcode运行Run Script Build Phase"--->一切都是最新的
  6. 第二轮:Xcode继续编译

在阅读Build Phases上的Xcode文档后,我尝试添加一个源文件,这个源文件在每次运行脚本时都会更新,作为"Run Script Build Phases"的输出,但没有任何改变.由于配置文件的数量可能在我的项目中有所不同,我不想指定每个输入和输出文件.

题:

如何让Xcode知道在"运行脚本构建阶段"期间所做的源文件更改?

编辑:

  • 补充说我在其他构建阶段之前放置了脚本构建阶段

scripting xcode dependencies build

56
推荐指数
2
解决办法
4万
查看次数

从脚本添加文件到Xcode项目?

现在我正在使用一些脚本来生成我在Xcode中作为资源包含的文件.问题是我正在运行脚本,然后从项目中删除,然后重新添加到项目中.必须有一种方法可以自动完成最后一步,这样脚本就可以生成文件并自动将它们添加到xcode项目中.

我正在使用bash,但任何语言示例都会有所帮助.

谢谢,安德鲁

scripting xcode project

51
推荐指数
5
解决办法
3万
查看次数

如何使xcode在依赖之前运行脚本?

场景:

我有TargetA,这是一个iOS应用程序.这个应用程序使用静态库,编译TargetB.显然,TargetB是一种依赖TargetA,并且TargetB始终是之前构建的TargetA.到现在为止还挺好.

现在,我希望运行一个脚本TargetA,但是甚至在此之前TargetB.

我尝试了什么:

  1. 添加"设置"聚合/外部构建目标,并使其成为依赖项TargetA.它的工作原理一半:Xcode的运行setup,并TargetB在同一时间,因此TargetB可能会过早地建造.还不够好.
  2. 同样,但在方案中指定不要并行构建.这是有效的,但是是浪费,因为还有其他目标可以并行构建.
  3. pre-action在方案内部的构建步骤中运行脚本.这可行,但似乎错了(为什么?从该步骤输出不会进入构建日志;所以也许我不打算以这种方式使用它?).

我不想做的事:

添加脚本作为依赖项TargetB.这会奏效; 然而,TargetB实际上来自另一个子项目,并且在构建它的上下文中,脚本的参数尚不清楚(主要TargetA是项目的根目录).

我错过了什么,还是我必须满足于#2或#3以上?

编辑:在上面的选项#2中,改变依赖的顺序(在我的情况下,之间SetupTargetB没有帮助 - Xcode仍然任意选择顺序.

xcode build ios

15
推荐指数
1
解决办法
4001
查看次数

标签 统计

xcode ×3

build ×2

scripting ×2

dependencies ×1

ios ×1

project ×1