首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从xcode运行脚本构建阶段计算ld命令参数

从xcode运行脚本构建阶段计算ld命令参数
EN

Stack Overflow用户
提问于 2015-02-02 17:38:46
回答 1查看 1.8K关注 0票数 8

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

我把xcodebuild -dry-run看作是一种选择,但是我需要理解我应该提供的论据是什么。

有什么好的解决方案吗?

编辑

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

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-02-02 18:58:49

Xcode并没有公开一种很好的方法来做到这一点。在运行脚本构建阶段,您需要处理的就是在环境中提供给您的Xcode构建设置。

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

你可以这样做:

为目标创建一个.xcconfig。

它应该是这样的:

代码语言:javascript
运行
复制
LD = $(SRCROOT)/ld-wrapper/clang
LDPLUSPLUS = $(SRCROOT)/ld-wrapper/clang++

SRCROOT指向项目的目录。只有当应用程序有C++或ObjC++代码时,才需要LDPLUSPLUS行。如果不想创建xcconfig,也可以通过Xcode UI将这些设置添加为用户定义的构建设置。

创建包装脚本,以便Xcode调用.

<your project root>/ld-wrapper/wrapper.sh上安装这样的脚本

代码语言:javascript
运行
复制
#!/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++的包装脚本创建符号链接:

代码语言:javascript
运行
复制
cd <project root>/ld-wrapper
ln -s wrapper.sh clang
ln -s wrapper.sh clang++

就这样。很丑,但很管用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28283500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档