我正在努力弄清楚schemes在xcode中是如何工作的,以及它们的用途。我有一个跨平台的产品,它是在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吗?
发布于 2013-04-15 02:51:14
为SCons编写一个包装器脚本,并将其放在您的项目中。例如:
外部生成工具配置
$(PROJECT_DIR)/scons-xcode-wrapper.sh$(ACTION)包装脚本
从实验中看,$(ACTION)在构建时是空的,在清理时设置为clean。
#!/bin/sh
cd "$PROJECT_DIR"
case $1 in
clean)
scons -c
;;
*)
scons
;;
esac不要忘记chmod +x你的脚本。
发布于 2013-04-15 12:44:15
使用SCons,您可以编程地设置构建,以便使用SetOption()函数执行清理。clean选项和可以设置的其他选项都列出了这里。
问题是,SCons将不以“-选项”或"option=value“形式的命令行选项作为目标。所以不可能导致像scons clean这样的东西来执行清理。我用Alias()函数进行了测试,但无法让它工作。
如果您可以选择将xcode使用的用于$(ACTION)的字符串更改为类似于clean=1的字符串,那么您可以使用下面的内容来编程地进行清理:
env = Environment()
if ARGUMENTS.get('clean') == '1':
print "Setting clean"
env.SetOption('clean', True)
print env.GetOption('clean')
...这将导致一个干净的:
scons clean=1您也可以考虑AddOption(),但这只允许使用--预置的选项
发布于 2014-05-27 14:07:49
将“参数”参数设置为以下列结尾:
--$(ACTION)这将转化为:
scons [all your arguments] --clean如果您检查scon 这里的文档,您可以看到--clean和-c一样正常工作。
干净是唯一有效的,其他的构建操作总是空白的。
https://stackoverflow.com/questions/16006648
复制相似问题