When changing the comment of a .c file, scons still re-compile it?

旧街凉风 提交于 2020-01-25 21:40:07

问题


It's said that scons uses MD5 signature as default decider to dertermine whether a source file needs re-compilation. E.g. I've got SConstruct as below:

Library('o.c')

And my o.c is:

$ cat o.c
    /*commented*/
    #include<stdio.h>
    int f(){
      printf("hello\n");
      return 2;
    }

Run scons and remove the comment line, run scons again. I expect that scons should not compile it again, but actually it's:

gcc -o o.o -c o.c
scons: done building targets.

If I change SConstruct file to add one line:

Decider('MD5').

Still same result.

My question is: how to make sure that for scons, when changing source file comments, they don't get re-built?

Thanks!


回答1:


As you correctly stated, SCons uses the MD5 hashsum of a source file to decide whether it has changed or not (content-based), and a rebuild of the target seems to be required (since one of its dependencies changed). By adding or changing a comment, the MD5 sum of the file changes...so the trigger fires.

If you don't like this behaviour, you can write and use your own Decider function which will omit comment changes to your likings. Please check section 6.1.4 "Writing Your Own Custom Decider Function" in the UserGuide to see how this can be done.



来源:https://stackoverflow.com/questions/39832072/when-changing-the-comment-of-a-c-file-scons-still-re-compile-it

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!