2013-05-01 47 views
2

我正在编写一个具有嵌入式帮助程序的应用程序。我配置了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".

要尝试模拟清理build文件夹中更有针对性的方式,我写了一个运行脚本阶段之前只是运行一个很小的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: $!"; 
} 

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

回答

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的菜单中选择“编辑器” - >“展开选定脚本”。

+0

这似乎已经做了窍门 - 我没有意识到它正在其他地方建造,然后移动到最终位置。谢谢! – 2013-05-01 20:37:22