从 Xcode 12 升级后,在任何版本的 Xcode 13 或更高版本上,运行
sudo sh install-appledoc.sh
命令时都会出现以下错误:
Build input file cannot be found: '~/<ProjectDir>/appledoc/default_templates.zip'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it? (in target 'appledoc' from project 'appledoc')
研究这个问题后,我能找到的最好的线索是确保目标没有任何排除的架构,而它没有。我还可以确认所指出的文件确实存在于指定位置。所以我对这个感到困惑。有关如何修复的任何想法吗?
可以通过将
$(PROJECT_DIR)/default_templates.zip
添加到 Appledoc 项目的构建阶段的 Output Files 部分来修复此问题。
将
添加到 Appledoc 项目构建阶段的 Output Files 部分。$(PROJECT_DIR)/default_templates.zip
嗯,是的:将
$(PROJECT_DIR)/default_templates.zip
添加到 Xcode 的构建阶段中的 Output Files 部分会明确指示 Xcode 在构建脚本执行后在何处期望文件:Xcode 现在可以在构建过程中正确跟踪文件,确保它是在指定位置识别。
这在“Xcode /构建系统/在构建期间运行自定义脚本/指定脚本的输入和输出文件”中提到。
通过在构建设置中指定输出文件,您可以有效地声明构建的依赖项。然后,Xcode 可以确保所有列出的文件都按预期生成,然后再继续后续构建步骤。这降低了与丢失文件相关的错误风险。
如上所述,避免在 Xcode 构建脚本中或运行与 Xcode 集成的脚本时使用
sudo
。 sudo
可以更改环境变量,这可能导致 $HOME
指向根主目录而不是用户的目录。
使用管道时,最好添加一个脚本来回显
$HOME
或其他相关变量:Xcode 中的新运行脚本阶段:
echo "Home directory: $HOME"
echo "User: $(whoami)"
脚本执行时会打印出有效的用户和主目录路径,可以帮助您调试路径问题。