首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有任何方法可以使XCode构建设置根据构建操作而有所不同(例如,清理、重建)?

是否有任何方法可以使XCode构建设置根据构建操作而有所不同(例如,清理、重建)?
EN

Stack Overflow用户
提问于 2013-04-15 02:10:39
回答 4查看 3.1K关注 0票数 6

我正在努力弄清楚schemesxcode中是如何工作的,以及它们的用途。我有一个跨平台的产品,它是在OS上使用外部构建系统( scons )构建的。我希望能够从构建/调试,主要是因为使用了符号搜索和调试器。我一直在使用eclipse CDT,虽然它工作得很好,但也有一些怪癖。

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

问题是我想让Menu->Project->Clean工作。看起来,Xcode/xcodebuilder使用$(ACTION)变量来传递这个变量--其中$(ACTTION)要么是' build ''clean',要么是其他一些构建操作。见ACTION构建动作。Scon有一点不同--它有一个内置的干净操作,可以在命令行中使用scons -c调用。因此,我的第一个想法是使用一个条件'Build‘来传递这个参数,但是事实证明,条件'Build’似乎不会因构建ACTION而改变--只是构建体系结构和SDK。

是否可以在'Build设置‘Xcode/xcodebuilder中添加表达式?还有别的好方法可以让'Clean'在Xcode中使用scons吗?

EN

回答 4

Stack Overflow用户

发布于 2013-04-15 02:51:14

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

外部生成工具配置

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

包装脚本

从实验中看,$(ACTION)在构建时是空的,在清理时设置为clean

代码语言:javascript
复制
#!/bin/sh
cd "$PROJECT_DIR"
case $1 in
  clean)
    scons -c
    ;;
  *)
    scons
    ;;
esac

不要忘记chmod +x你的脚本。

票数 5
EN

Stack Overflow用户

发布于 2013-04-15 12:44:15

使用SCons,您可以编程地设置构建,以便使用SetOption()函数执行清理。clean选项和可以设置的其他选项都列出了这里

问题是,SCons将不以“-选项”或"option=value“形式的命令行选项作为目标。所以不可能导致像scons clean这样的东西来执行清理。我用Alias()函数进行了测试,但无法让它工作。

如果您可以选择将xcode使用的用于$(ACTION)的字符串更改为类似于clean=1的字符串,那么您可以使用下面的内容来编程地进行清理:

代码语言:javascript
复制
env = Environment()

if ARGUMENTS.get('clean') == '1':
    print "Setting clean"
    env.SetOption('clean', True)

print env.GetOption('clean')
...

这将导致一个干净的:

代码语言:javascript
复制
scons clean=1

您也可以考虑AddOption(),但这只允许使用--预置的选项

票数 1
EN

Stack Overflow用户

发布于 2014-05-27 14:07:49

将“参数”参数设置为以下列结尾:

代码语言:javascript
复制
--$(ACTION)

这将转化为:

代码语言:javascript
复制
scons [all your arguments] --clean

如果您检查scon 这里的文档,您可以看到--clean-c一样正常工作。

干净是唯一有效的,其他的构建操作总是空白的。

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

https://stackoverflow.com/questions/16006648

复制
相关文章

相似问题

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