我有一个构建图书馆的项目。 Xcode设置DSTROOT设置为默认的/tmp/$(PROJECT_NAME).dst,Xcode将库放置在此处。我有一个复制阶段来添加手册页。它的目标设置为“绝对路径”,路径设置为$(DSTROOT)/ usr / local / share / man / man3。当我运行它时,它尝试将手册页复制到“ / usr / local / share / man / man3”,因此我被拒绝了权限。换句话说,它的作用就像未设置DSTROOT。我尝试显式设置DSTROOT值,而不使用默认值。一样。
如何获得此复制文件构建阶段以使用DSTROOT值?
答案 0 :(得分:1)
请勿使用绝对路径。一种方法是选择Wrapper作为目的地,并使用“ ../../usr/local/share/man/man3”作为相对路径。假定包装路径是默认的/ Applications / $(PRODUCT_NAME).app。
另一种方法是根本不使用“复制文件”构建阶段。使用运行脚本构建阶段。将外壳设置为/bin/bash
并使用类似以下脚本:
set -x
mandir="$DSTROOT/usr/local/share/man/man3"
mkdir -p "$mandir"
i=0
while [$i -lt ${SCRIPT_INPUT_FILE_COUNT}] ; do
name="SCRIPT_INPUT_FILE_$i"
cp "${!name}" "$mandir/"
let i=i+1
done
复制文件后,您可能想要chmod
和/或chown
。
确保将要复制的文件作为输入添加到构建阶段,并将输出路径(可以基于${DSTROOT}
)添加为输出。