相关疑难解决方法(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万
查看次数

iPhone - 更改包标识符

最初我的应用程序的包标识符是默认值

MyCompany.${PRODUCT_NAME:rfc1034identifier}

这与我在开发人员连接上创建的应用程序ID不匹配(产品名称中的空格被转换为连字符)所以我将MyApp-Info.plist中的包标识符硬编码为

com.MyCompany.MyApp

但是,当我记录[NSBundle mainBundle] bundleIdentifier]它仍然返回旧的标识符.清洁目标没有帮助.任何人都可以想到它来自哪里,如果不是Info.plist?

nsbundle ios

8
推荐指数
1
解决办法
1万
查看次数

为Xcode设置用户特定的预处理器宏

我希望能够有特定的代码块,例如#ifdef SOME_VARIABLE如果项目是在特定用户的计算机上构建的,则变量的值将在项目的构建时填充。

那可能吗?

xcode objective-c xcode4.5

3
推荐指数
1
解决办法
1795
查看次数

标签 统计

xcode ×2

build ×1

dependencies ×1

ios ×1

nsbundle ×1

objective-c ×1

scripting ×1

xcode4.5 ×1