使用命令行工具从 Xcode 复制文件
Posted
技术标签:
【中文标题】使用命令行工具从 Xcode 复制文件【英文标题】:Copying Files From Xcode With Command Line Tool 【发布时间】:2018-08-08 00:01:35 【问题描述】:我正在开发 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】:我能够使用 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
的文件路径将按预期返回。
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"The" ofType:@"File"];
【讨论】:
以上是关于使用命令行工具从 Xcode 复制文件的主要内容,如果未能解决你的问题,请参考以下文章
使用下载的 pkg 文件时,xcode 命令行工具安装在哪里?
Xcode 命令行工具 (XCode 4.6) 从终端运行单元测试
如何从 bash 验证是不是已安装 xcode 命令行工具?