【问题标题】:Skip build altogether but generate platform dependant sources in SCons完全跳过构建,但在 SCons 中生成依赖于平台的源
【发布时间】:2014-12-19 17:28:46
【问题描述】:

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

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

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

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

编辑:

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

【问题讨论】:

    标签: xcode scons


    【解决方案1】:

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

    scons lib1/source1.cpp sourceb.cpp
    

    就是一个例子。

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

    【讨论】:

    • 第一个链接中的基准显示 SCons 在大多数情况下比 make 慢几个数量级。此外,我正在更新问题以添加一些关于为什么 SCons 在我的情况下运行缓慢的观察结果。
    • 是的,页面的其余部分解释了为什么在给定的情况下会观察到这种行为(这很少适合实际项目)以及可以做些什么(如何加快 SCons )。如果您对 SCons 有真正的性能问题,我真的很想了解它们并尝试改善您的情况。但从你最新的编辑中,我得到的印象是它更多的是关于“你根本不想和 SCons 搞混”......这对我来说非常好。让我们把它留在那个...但是,我邀请您到 scons-users@scons.org 在那里我们可以进一步讨论。
    【解决方案2】:

    像下面的代码一样在SConstruct 中覆盖Export() 并将参数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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多