我需要从 SCons 脚本生成 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'])
当我第一次运行上面的代码时,一切都很好。但是当我再次运行相同的脚本时,由于生成了新的 version.cc,目标“测试”将被重建。我的要求是,如果文件已经存在并且任何源(即本例中的 a.cc 和 b.cc)都没有更改,我们不应该生成新版本的 version.cc 文件
如果不是 version_file_present: 生成版本代码() 别的 如果 no_changes_in_source: 生成版本代码() #target 使用 version.cc 可以是新生成的一个或以前的一个 libtest = env.Library('test', ['a.cc', 'b.cc', 'version.cc'])
该网站上的一个相关问题建议如下
env.Command(target="version.c", source="version-in.c", 动作=PythonFunctionToUpdateContents) env.Program("foo", ["foo.c", "version.c"])
对于上述建议,我想知道函数 PythonFunctionToUpdateContents 的内容,该函数检查自上次构建以来源文件的更改。