如何让复制文件构建阶段遵循 DSTROOT 构建设置?
How can I get a Copy Files Build Phase to follow the DSTROOT build setting?
我有一个构建库的项目。 Xcode 设置 DSTROOT 设置为默认值 /tmp/$(PROJECT_NAME).dst 并且 Xcode 将库放在那里。我有一个复制阶段来添加手册页。它的目标设置为 "Absolute Path",路径设置为 $(DSTROOT)/usr/local/share/man/man3。当我 运行 它时,它会尝试将手册页复制到“/usr/local/share/man/man3”,所以我的权限被拒绝了。换句话说,它就像未设置 DSTROOT 一样。我尝试明确设置 DSTROOT 值而不是使用默认值。一样的。
如何让这个复制文件构建阶段使用 DSTROOT 值?
不要使用绝对路径。一种方法是将 select Wrapper 作为目标并使用“../../usr/local/share/man/man3”作为相对路径。这假定包装器路径是 /Applications/$(PRODUCT_NAME).app,默认值。
另一种方法是根本不使用复制文件构建阶段。使用 运行 脚本构建阶段。将 shell 设置为 /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
and/or chown
复制文件后。
确保将要复制的文件添加为构建阶段的输入,并将输出路径(可以基于 ${DSTROOT}
)添加为输出。
我有一个构建库的项目。 Xcode 设置 DSTROOT 设置为默认值 /tmp/$(PROJECT_NAME).dst 并且 Xcode 将库放在那里。我有一个复制阶段来添加手册页。它的目标设置为 "Absolute Path",路径设置为 $(DSTROOT)/usr/local/share/man/man3。当我 运行 它时,它会尝试将手册页复制到“/usr/local/share/man/man3”,所以我的权限被拒绝了。换句话说,它就像未设置 DSTROOT 一样。我尝试明确设置 DSTROOT 值而不是使用默认值。一样的。
如何让这个复制文件构建阶段使用 DSTROOT 值?
不要使用绝对路径。一种方法是将 select Wrapper 作为目标并使用“../../usr/local/share/man/man3”作为相对路径。这假定包装器路径是 /Applications/$(PRODUCT_NAME).app,默认值。
另一种方法是根本不使用复制文件构建阶段。使用 运行 脚本构建阶段。将 shell 设置为 /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
and/or chown
复制文件后。
确保将要复制的文件添加为构建阶段的输入,并将输出路径(可以基于 ${DSTROOT}
)添加为输出。