gpt4 book ai didi

XCode通用库构建阶段——Lipo找不到文件

转载 作者:行者123 更新时间:2023-12-05 08:09:14 25 4
gpt4 key购买 nike

我已经阅读了一些关于如何让 XCode 创建通用库的教程和指南。基本上,您添加一个带有 bash 脚本构建阶段的聚合目标来构建单独的目标并将它们组合在一起。

我有自己的小脚本(因为我命名目标的方式而起作用)但出于某种原因 lipo 找不到文件;

fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't open input file: /Users/username/Projects/project/plugins/build/Release-iphoneos/libproject-plugins.a /Users/username/Projects/project/plugins/build/Release-macos/libproject-plugins.a (No such file or directory)

然而当我

  1. 在构建失败后立即运行完全相同的 lipo 命令,一切正常并找到文件。
  2. 在我的脚本中添加 bash 逻辑以等待文件创建问题仍然存在。
  3. 用简单的 ls 替换我脚本中的 lipo,文件就在那里。

所以我不确定出了什么问题,它似乎不是 xcodebuild 只在调用 lipo 之后创建文件(正如我首先想到的那样)。

脚本;

targets=$(xcodebuild -list | sed -n '/Targets/,/^$/p' | grep -v -e 'Targets:\|all\|^$')
target_results=""

for target in $targets; do
xcodebuild ${ACTION} -target $target -configuration ${CONFIGURATION}
target_results="$target_results ${PROJECT_DIR}/build/${CONFIGURATION}-$target/libproject-plugins.a"
done

xcrun lipo -create "$target_results" -o "${PROJECT_DIR}/plugins-universal.a"

最佳答案

这是一个 bash 问题/错误。
您将所有文件名作为单个参数传递给 lipo,因此它将查找名为 /Users/username/Projects/project/plugins/build/Release-iphoneos 的单个文件/libproject-plugins.a/Users/username/Projects/project/plugins/build/Release-macos/libproject-plugins.a.

您应该使用数组代替文件名。

  • () 代替 "" 初始化它。
  • 使用 +=(...) 而不是 ="$var ..." 添加元素。
  • 使用 "${var[@]}" 而不是 "$var" 将每个元素分别传递给 lipo

应用于您的脚本:

targets=$(xcodebuild -list | sed -n '/Targets/,/^$/p' | grep -v -e 'Targets:\|all\|^$');
target_results=();

for target in $targets; do
xcodebuild ${ACTION} -target $target -configuration ${CONFIGURATION};
target_results+=("${PROJECT_DIR}/build/${CONFIGURATION}-$target/libproject-plugins.a");
done;

xcrun lipo -create "${target_results[@]}" -o "${PROJECT_DIR}/plugins-universal.a";

关于XCode通用库构建阶段——Lipo找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com