我正在使用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中的命令行工具来完成此操作?
答案 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"];