eke*_*ren 8 xcode xcodebuild xctool
如何从运行为"运行脚本构建阶段"的脚本内部确定构建过程中ld命令的参数是什么?
我正在考虑xcodebuild -dry-run作为一种选择,但后来我需要了解我提供它的论据应该是什么.
想要一个强大的解决方案吗?
编辑:
当项目包含swift源代码时,xcodebuild似乎不支持LD和LDPLUSPLUS.所以@fpotter提供的解决方案不适用于swift项目.
有什么想法吗?
小智 5
Xcode没有公开一种很好的方法来做到这一点.在运行脚本构建阶段,您需要使用的只是在环境中提供给您的Xcode构建设置.
如果你真的需要整个参数列表ld,那么你可以使用hack.使用LD和LDPLUSPLUS构建设置,您可以使Xcode调用您自己的脚本而不是真实的脚本ld.从该脚本中,您可以捕获args,调用真正的链接器,然后执行您喜欢的任何后处理,而不是在Run Script构建阶段.
这是你如何做到这一点:
为目标创建.xcconfig.
它应该如下所示:
LD = $(SRCROOT)/ld-wrapper/clang
LDPLUSPLUS = $(SRCROOT)/ld-wrapper/clang++
Run Code Online (Sandbox Code Playgroud)
SRCROOT指向您项目的目录.只有当您的应用程序具有C++或ObjC++代码时,才需要LDPLUSPLUS行.如果您不想创建xcconfig,还可以通过Xcode UI将这些添加为用户定义的构建设置.
为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."
Run Code Online (Sandbox Code Playgroud)
为clang和clang ++创建包装脚本的符号链接:
cd <project root>/ld-wrapper
ln -s wrapper.sh clang
ln -s wrapper.sh clang++
Run Code Online (Sandbox Code Playgroud)
而已.这很难看,但它确实有效.
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |