小编use*_*935的帖子

Scons:仅在目标已更改时生成版本文件

我需要从SCons Script生成version.cc文件.仅当目标的任何源文件发生更改时,才应生成此文件.

假设SCons脚本具有以下语句

#python function which generates version.cc in the same folder where libtest.a is generated. This will always generate a differnt version.cc because the version string contained inside  that will have timestamp
GenerateVersionCode() 

#target which uses version.cc
libtest = env.Library('test', ['a.cc', 'b.cc', 'version.cc'])
Run Code Online (Sandbox Code Playgroud)

我第一次运行上面的代码时一切都很好.但是当我再次运行相同的脚本时,由于生成了新的version.cc,目标'test'将被重建.我的要求是,如果文件已经存在并且任何源中没有任何更改(在此示例中为a.cc和b.cc),我们不应生成新版本的.cc文件



   if not version_file_present:
        GenerateVersionCode()
    else 
        if no_changes_in_source:  
            GenerateVersionCode()


    #target which uses version.cc which could be newly generated one or previous one
    libtest = env.Library('test', ['a.cc', 'b.cc', 'version.cc'])

本网站上的一个相关问题提出如下建议


    env.Command(target="version.c", source="version-in.c",
        action=PythonFunctionToUpdateContents)
    env.Program("foo", ["foo.c", "version.c"])

对于上面的建议,我想知道函数PythonFunctionToUpdateContents的内容,它检查自上一次构建以来源文件的变化.

scons

4
推荐指数
1
解决办法
1003
查看次数

标签 统计

scons ×1