当我更改SConstruct文件时,scons不会触发重建?

时间:2016-10-03 12:41:41

标签: linux triggers scons rebuild

首先,我有这样的SConstruct文件:

Object('a.s')
Program('mya','a.o')

我运行scons,它会产生' mya'。好。然后我将我的SConstruct改为:

Object('a.s',CCFLAGS='-DHello')
Program('mya','a.o')

再次运行scons。什么都没做:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
scons: done building targets.

这对我来说很奇怪。当我使用make或msbuild系统时,无论何时在项目配置文件中进行了更改,都会有重建。这是默认规则。

但似乎scons的规则是不同的,这是设计的吗?只有在源文件更改时才会触发重建?如果这是设计,我认为有一个缺陷,当编译/链接器选项更改时,目标文件应该是不同的,因此,应该触发重建,对吧?

我的理解是不正确的,还是我还需要了解一些特殊要点? 非常感谢。

1 个答案:

答案 0 :(得分:3)

直接引用您的上一段,并根据您的最后三个问题(Using 'LIBS' in scons 'Program' command failed to find static library, why?When changing the comment of a .c file, scons still re-compile it?及此一个)及其深度,是的,似乎您有很多事情要做不了解SCons。

因此,请按照后面的步骤阅读MAN pageUserGuide。您可能还想稍微调低一下,而不是质疑它的设计或声称似乎存在一个"缺陷"做功课(另见How To Ask Questions The Smart Way)。

当你打电话给" scons -c"然后是" scons"你应该看到" -DHello"不会出现在命令行中,即使" a.o"得到重建。变量$CCFLAGS不用于编译汇编程序文件,但是$ASFLAGS是......而在设置它时,您确实应该立即看到重建,而不编辑源文件。