有没有办法让XCode构建设置根据构建ACTION(例如,清理,重建)而变化?

Ted*_*ton 5 xcode scons xcodebuild

我正在努力弄清楚究竟是如何schemes工作的xcode以及它们的用途.我有一个使用外部构建系统(scons)在OS X上构建的跨平台产品.我希望能够构建/调试Xcode,主要是因为符号搜索和调试器.我一直在使用eclipse CDT哪个效果很好,但有一些怪癖.

我可以通过创建一个空项目并添加一个"外部构建系统"目标来实现这一点.然后,作为目标的'Info'的一部分,我将'Build Tool'指定为/ usr/local/bin/scons,'Arguments'是我发送给scons的构建参数.基本上我调用了以下构建变量$(TARGET),$(BUILD_TYPE)这些变量根据构建是调试还是发布而有所不同,因此可以将它们指定为条件"构建设置".

问题是我想Menu->Project->Clean工作.它看起来像Xcode/xcodebuilder使用$(ACTION)变量来这个消息传给其他-这里$(ACTTION)要么是"打造","干净",或其他一些建设行动.请参阅xcodebuild ACTION.Scons有点不同 - 它有一个内置的清理动作,在命令行上调用scons -c.所以我的第一个想法是使用条件"构建设置"来传递这个参数,但事实证明,条件"构建设置"似乎并没有因构建而异ACTION- 只是构建体系结构和SDK.

是否可以在"构建设置"中添加表达式Xcode/xcodebuilder?还有另一种好方法可以让'清洁'Xcode与scons 一起工作吗?

Die*_*Epp 5

编写一个包装脚本SCons,并将其放入您的项目中.例如:

外部构建工具配置

  • 构建工具: $(PROJECT_DIR)/scons-xcode-wrapper.sh
  • 参数: $(ACTION)

包装脚本

从实验中看,它$(ACTION)在建造时看起来是空的,并且clean在清洁时设置为空.

#!/bin/sh
cd "$PROJECT_DIR"
case $1 in
  clean)
    scons -c
    ;;
  *)
    scons
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

别忘了chmod +x你的剧本.