升级到Mavericks和Xcode 5后,我需要处理一些小问题,以便使Xcode编译我的旧项目。
似乎Xcode正在向ld
链接器传递一个新参数,而实际上无法阻止Xcode这样做。我需要的是一个薄包装层来覆盖我的旧版本ld
,在某些情况下删除“不良”参数。我认为,一个bash shell脚本就很完美,但bash不是我的强项。
这是我目前拥有的:
# Look for conditions necessary to use older ld
... # (placeholder, obviously)
# Run older ld (pseudo condition)
if [ <old_ld_condition> ]; then
ARGS=''
for var in "$@"; do
# Ignore known bad arguments
if [ "$var" = '-dependency_info' ]; then
continue
fi
ARGS="$ARGS $var"
done
/path/to/old/ld "$ARGS"
else
/path/to/new/ld "$@"
fi
然而,执行 /path/to/old/ld "$ARGS"
会导致 ld
将整个 $ARGS
字符串作为一个参数进行解释。而执行 /path/to/old/ld $ARGS
则会导致 ld
接收到先前转义字符串的未转义版本。
显然,我对于 $@
的本质、如何操作它以及如何将此操作传递给旧版的 ld
存在一些误解。感谢大家。
.xcodeproj
文件,不幸的是,我没有能力将它们转移到命令行构建过程(例如make
)。不过还是感谢您的建议。 - inspector-g