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



我有一个使用 SCons 生成依赖于平台的源文件的项目,这些文件与其他附带的源文件一起编译为静态库并链接到最终的可执行文件中,仅此而已,没有为我的 IDE 生成任何项目文件 (Xcode(

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

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

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

编辑:

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

是的

,您可以显式指定要在命令行上构建的目标:

scons lib1/source1.cpp sourceb.cpp

将是一个例子。

既然你提到SCons对你来说"太慢了",你是如何衡量的(见 http://scons.org/wiki/WhySconsIsNotSlow 和 http://scons.org/wiki/GoFastButton(?

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

系统指令

__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)

最新更新