xcode - 复制文件阶段正在获取最后构建的产品

标签 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: $!";
}

有人知道这是怎么回事吗?我怎样才能让我的助手和它的主机保持同步?

最佳答案

您的脚本在复制阶段之前运行,因此我认为您需要 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 菜单中选择“编辑器”->“展开选定的转录本”。

关于xcode - 复制文件阶段正在获取最后构建的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317882/

相关文章:

xcode - 无法在 Mojave 上安装 XCode

java - 寻找JAVA之家

objective-c - NSScrollView 中的 NSTableView 在哪里?

iphone - 使用 UITableView 显示矩阵类型的数据

ios - 可能的 xcode 4.2 错误

iphone - 在 iPhone 或模拟器上检查设计

objective-c - Snow Leopard 上的窗口关闭按钮劫持

objective-c - 写入文件不起作用

macos - 在 64 位 Mac 上构建 Lua 5.0

objective-c - Quartz 2D 矩形中的绘图字符串,如何获得省略号?