完全跳过构建,但在SCons中生成依赖于平台的源

时间:2014-12-19 17:28:46

标签: xcode scons

我有一个项目,它使用SCons生成平台相关的源文件,这些源文件与其他提供的源文件一起编译到静态库中并链接到最终的可执行文件中,就是这样,没有为我生成项目文件IDE(Xcode)

我设法在新的Xcode项目中添加SCons作为外部构建系统来构建和调试可执行文件

我现在想要的是自定义源代码并添加一些库来完全删除Scons作为外部构建系统。在我的情况下,Scons不实用,速度太慢,而且我不想弄乱脚本。

所以问题是SCons中是否有一个功能可以跳过构建过程但只生成平台相关的源文件?

编辑:

我想对项目进行一些自定义,并且至少在我需要做拉取请求之前不要乱用SCons,这是我的工作流程,以前的项目使用CMake生成Xcode项目,SCons需要修改脚本。

2 个答案:

答案 0 :(得分:1)

是的,您可以明确指定要在命令行上构建的目标:

scons lib1/source1.cpp sourceb.cpp

就是一个例子。

既然你提到SCons对你来说“太慢了”,你究竟是如何衡量的(见http://scons.org/wiki/WhySconsIsNotSlowhttp://scons.org/wiki/GoFastButton)?

答案 1 :(得分:0)

覆盖Export()中的SConstruct,如下面的代码,并将参数skip_build添加到脚本中,该脚本设置了__SkipBuild的值,我完全可以跳过构建过程(即编译和链接),仅生成平台相关源

<强> SConstruct

__Export = Export
__CommandsList = ['CC','CXX','AR','RANLIB','AS','LINK'] # The commands to skip from the build process
__SkipBuild = False

def Export(*vars, **kw):
    for var in vars:
        locals()[var] = call_stack[-1].globals[var]
        if (call_stack[-1].globals['__SkipBuild']):
            for command in __CommandsList:
                if locals()[var].has_key(command):
                    locals()[var][command] = 'echo ' + locals()[var][command]
    call_stack[-1].globals.update(kw)
    __Export(locals(), kw)