使用命令行工具从Xcode复制文件

时间:2018-08-08 00:01:35

标签: objective-c

我正在使用Xcode开发命令行工具。我面临的挑战如下:如果文件不存在,例如/Path/To/The.File,如果已将The.File的副本添加到项目资源中,如何将其复制到/Path/To/The.File

对于MacOS应用程序项目,我相信我已经成功使用了类似于以下内容的文件路径:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"The" ofType:@"File"];

有了文件路径,我便能够执行代码以将文件从文件路径复制到预期位置/Path/To/The.File

是否可以使用Xcode中的命令行工具来完成此操作?

1 个答案:

答案 0 :(得分:0)

我能够使用Makefile来“嵌入”资源The.File

在Xcode中构建项目之后,我将资源The.File与已编译的项目TheCompiledProject一起放置到一个临时文件夹中。这是Makefile的内容:

UPDATE=bundledExecutable

BIN1=TheCompiledProject
BIN2=The.File

all: $(UPDATE)

$(UPDATE): ./$(BIN1) ./$(BIN2)
    @echo "UP  [ $@ ]"
    echo '#!/bin/bash' > $@
    echo 'FOLDER=`mktemp -d -t upgrade`' >> $@
    echo 'cd $$FOLDER; uudecode -c << '"'EOF' | tar -x" >> $@
    uuencode $(BIN1) $(BIN1) >> $@
    uuencode $(BIN2) $(BIN2) >> $@
    echo 'EOF' >> $@
    echo 'chmod a+x $$FOLDER/$(BIN1)' >> $@
    echo 'chmod a+x $$FOLDER/$(BIN2)' >> $@
    echo '$$FOLDER/$(BIN1)' >> $@
    echo 'rm -rf $$FOLDER' >> $@
    chmod a+x $@

如果使用pathForResource方法,则在TheCompiledProject中,将按预期返回The.File的filePath。

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"The" ofType:@"File"];