gpt4 book ai didi

xcode - 从 xcode 运行脚本构建阶段找出 ld 命令参数

转载 作者:行者123 更新时间:2023-12-04 08:24:33 25 4
gpt4 key购买 nike

如何从作为“运行脚本构建阶段”运行的脚本内部确定构建过程中 ld 命令的参数是什么?

我在看 xcodebuild -dry-run作为一种选择,但我需要了解我提供的参数应该是什么。

任何想法的强大解决方案?

编辑 :

当项目包含 swift 源代码时,xcodebuild 似乎不支持 LD 和 LDPLUSPLUS。因此,@fpotter 提供的解决方案不适用于 swift 项目。

有什么想法吗?

最佳答案

Xcode 没有公开一个很好的方法来做到这一点。在运行脚本构建阶段,您只需使用环境中提供给您的 Xcode build设置。

如果你真的需要 ld 的整个参数列表,你可以使用一个hack。与 LDLDPLUSPLUSbuild设置,你可以让 Xcode 调用你自己的脚本而不是真正的 ld .从该脚本中,您可以捕获参数,调用真正的链接器,然后在那里进行您喜欢的任何后处理,而不是在运行脚本构建阶段。

您可以这样做:

为您的目标创建一个 .xcconfig。

它应该如下所示:

LD = $(SRCROOT)/ld-wrapper/clang
LDPLUSPLUS = $(SRCROOT)/ld-wrapper/clang++

SRCROOT 指向你的项目目录。仅当您的应用程序具有 C++ 或 ObjC++ 代码时才需要 LDPLUSPLUS 行。如果您不想创建 xcconfig,您还可以通过 Xcode UI 将它们添加为用户定义的build设置。

创建 Xcode 调用的包装脚本。

<your project root>/ld-wrapper/wrapper.sh 安装这样的脚本:
#!/bin/bash

set -o errexit

# Choose which clang to run (clang or clang++) depending on how we're invoked.
# If we're invoked via the 'clang' link, we'll run 'clang'. If we're invoked
# via the 'clang++' link, we'll run 'clang++'.
CLANG_PATH="$DEVELOPER_DIR"/Toolchains/XcodeDefault.xctoolchain/usr/bin/$(basename "$0")

"$CLANG_PATH" "$@"

echo "clang args: $@"
echo "do any post processing here."

为 clang 和 clang++ 的包装脚本创建符号链接(symbolic link):
cd <project root>/ld-wrapper
ln -s wrapper.sh clang
ln -s wrapper.sh clang++

就是这样。这很丑陋,但它有效。

关于xcode - 从 xcode 运行脚本构建阶段找出 ld 命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283500/

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