我需要从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 ×1