复制文件阶段正在获得最后一个版本的产品

时间:2013-05-01 12:13:07

标签: xcode macos cocoa

我正在编写一个包含嵌入式帮助应用的应用。我配置了Xcode行为,以便每次构建应用程序时两个应用程序的捆绑版本都会增加。问题是,我发现除非我每次都清理我的构建文件夹,否则我的应用程序的版本N会获得帮助程序的版本N - 1。这不仅仅是版本号不匹配 - 帮助应用程序的二进制文件不包含我刚才所做的更改。

我的基本设置如下:

"Typesetter Toolkit Helper" is included in a Target Dependencies phase at the top, and "Typesetter Toolkit Helper.app" is listed in a Copy Files phase at the bottom, being copied to "Contents/Helpers" in destination "Wrapper".

为了尝试以更有针对性的方式模拟清理构建文件夹,我编写了一个小的Perl脚本,该脚本在复制文件阶段之前的运行脚本阶段运行,该阶段添加了帮助程序,但它没有任何效果:

use strict;
use warnings;

use File::Path qw(remove_tree);

my $dir = "$ENV{TARGET_BUILD_DIR}/$ENV{WRAPPER_NAME}/Contents/Helpers";
if(-e $dir) {
    remove_tree $dir or die "Can't rmtree $dir: $!";
}

有谁知道发生了什么事?如何让我的助手和主机保持同步?

1 个答案:

答案 0 :(得分:3)

您的脚本在复制阶段之前运行,因此我认为您希望BUILD_DIR不是TARGET_BUILD_DIR。

BUILD_DIR = /Users/gdunham/Library/Developer/Xcode/DerivedData/DC_Wire_Sizer-csvpfesmgmorlhendyncafecwzam/Build/Products
TARGET_BUILD_DIR = /Users/gdunham/Library/Developer/Xcode/DerivedData/DC_Wire_Sizer-csvpfesmgmorlhendyncafecwzam/Build/Products/Debug-iphonesimulator

提示:我通常会在运行脚本构建阶段检查“在构建日志中显示环境变量”。您还可以从脚本打印并通过展开构建阶段脚本来查看输出。在日志导航器中选择您的运行脚本,在Xcode的菜单中选择“编辑器” - > “展开选定的成绩单”。