2
目前我正在使用一些魔法来将当前的git修订版本导入到我的scons构建版中。我只是将该版本粘贴到CPPDEFINES中。 它工作得非常好......直到版本发生变化,scons想要重建所有内容,而不仅仅是已经更改的文件 - 因为所有文件使用的定义已更改。如何将构建版本添加到scons构建
理想情况下,我会使用一个名为git_version.cpp
和 的自定义构建器生成一个文件,只是有一个函数返回正确的标记。这样只有一个文件将被重建。
现在我确定我已经看过一个教程显示如何做到这一点..但我似乎无法跟踪它。我找到自定义生成器的东西,在scons的有点奇怪......
因此,任何指针将不胜感激......
反正仅供参考这是目前我在做什么:
# Lets get the version from git
# first get the base version
git_sha = subprocess.Popen(["git","rev-parse","--short=10","HEAD"], stdout=subprocess.PIPE).communicate()[0].strip()
p1 = subprocess.Popen(["git", "status"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["grep", "Changed but not updated\\|Changes to be committed"], stdin=p1.stdout,stdout=subprocess.PIPE)
result = p2.communicate()[0].strip()
if result!="":
git_sha += "[MOD]"
print "Building version %s"%git_sha
env = Environment()
env.Append(CPPDEFINES={'GITSHAMOD':'"\\"%s\\""'%git_sha})