Xcode 构建后复制文件操作

Posted

技术标签:

【中文标题】Xcode 构建后复制文件操作【英文标题】:Xcode Post Build Copy File Actions 【发布时间】:2009-08-25 23:08:48 【问题描述】:

在 Xcode 中,我如何调用“shell 脚本”,它是一个将 .app.dsym 文件复制到不同目录的 Perl 脚本?

我想将项目的名称和/或项目的根目录传递给脚本。我希望每次在发布和分发模式而不是调试模式下构建时都调用该脚本。

【问题讨论】:

【参考方案1】:

对于其他想知道的人,您也可以通过以下方式进行简单的复制

[点击方案名称] -> 编辑方案... -> [选择方案] -> 运行“目标” -> 后处理

并添加一个 cp 命令。就我而言,为了快速测试和易用性,我想将我的二进制文件复制回项目目录,以便处理一些数据文件。我使用了以下内容:

cp $TARGET_BUILD_DIR/$TARGET_NAME $PROJECT_DIR/"binaryFileName"

【讨论】:

【参考方案2】:

右键单击您的目标并选择 Add->New Build Phase->New Run Script Build Phase。

在“脚本”文本区域内,添加:

if [ $CONFIGURATION != "Debug" ]
then
    /usr/bin/perl "$PROJECT_DIR/myperlscript.pl" "$PRODUCT_NAME" "$PROJECT_DIR"
fi

myperlscript.pl 的位置和名称更改为脚本的位置和名称。

确保将Run Script 步骤移到Link Binary With Libraries 之后,因为您正在复制构建的.app。

(可能还想在问题中添加“perl”标签)

【讨论】:

酷。谢谢。我没有用语言标记它,因为我猜我可以将命令行的 perl 部分替换为使用 php 或 python 或其他任何东西。【参考方案3】:

Xcode 12.4 没有脚本,而是有一个用于复制文件的构建阶段:

    显示项目导航器(蓝色文件夹按钮) 点击您的项目(蓝图图标) 在打开的设置窗格中单击“构建阶段”标题 点击设置面板左上角的 + 点击“新建复制文件阶段” 将目标更改为绝对路径并设置路径 点击底部的+号添加要复制的文件 保存。如果您在未保存的情况下运行,则您的新阶段将被忽略

如果您不想要绝对路径或提供的目标之一,则必须改用运行脚本阶段。

【讨论】:

以上是关于Xcode 构建后复制文件操作的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 没有复制我文件夹中的文件

构建时将文件复制到 Xcode 项目的根目录

有没有办法在构建完成后将捆绑资源复制到应用程序文件夹?

AppleTv 正忙:AppleTv 完成后,将继续从设备 Xcode 复制缓存文件

XCode 卡在“复制符号文件”

Xcode iOS Build - 仅将特定子文件夹复制为捆绑资源