0

我有一个建立图书馆的项目。Xcode 设置 DSTROOT 设置为默认的 /tmp/$(PROJECT_NAME).dst,Xcode 将库放在那里。我有一个复制阶段来添加手册页。它的目标设置为“绝对路径”,路径设置为 $(DSTROOT)/usr/local/share/man/man3。当我运行它时,它会尝试将手册页复制到“/usr/local/share/man/man3”,因此我的权限被拒绝。换句话说,它就像没有设置 DSTROOT 一样。我尝试显式设置 DSTROOT 值而不是使用默认值。一样。

我怎样才能让这个复制文件构建阶段使用 DSTROOT 值?

4

1 回答 1

1

不要使用绝对路径。一种方法是选择 Wrapper 作为目标并使用“../../usr/local/share/man/man3”作为相对路径。这假定包装器路径是 /Applications/$(PRODUCT_NAME).app,这是默认的。

另一种方法是根本不使用 Copy Files 构建阶段。使用运行脚本构建阶段。将 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和/或chown复制文件后的文件。

确保将要复制的文件添加为构建阶段的输入,并将输出路径(可以基于${DSTROOT})添加为输出。

于 2019-04-27T21:28:55.883 回答