2016-10-03 8 views
0

Говорят, что scons использует подпись MD5 в качестве дешифратора по умолчанию, чтобы истолковать, нужен ли исходный файл для повторной компиляции. Например. У меня SConstruct, как показано ниже:При изменении комментария .c файла, scons все еще перекомпилируют его?

Library('o.c') 

И мой o.c является:

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

Run SCons и раскомментировать строку, снова запустить SCons. Я ожидаю, что SCons не должны скомпилировать его снова, но на самом деле это:

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

Если изменить SConstruct файл, чтобы добавить одну строку:

Decider('MD5'). 

Все еще такой же результат.

Мой вопрос: как убедиться, что для сён при изменении комментариев к исходному файлу они не могут быть перестроены?

Спасибо!

ответ

5

Как вы правильно заявили, SCons использует хэш-файл MD5 исходного файла, чтобы решить, было ли оно изменено или нет (на основе контента), и требуется восстановление конфигурации цели (поскольку одна из ее зависимостей изменилась) , Добавляя или изменяя комментарий, сумма MD5 файла изменяется ... поэтому срабатывает триггер.

Если вам не нравится это поведение, вы можете написать и использовать свою собственную функцию Decider, которая будет пропускать изменения комментариев по вашему желанию. Пожалуйста, ознакомьтесь с разделом 6.1.4 «Написание собственной пользовательской функции разрешения» в UserGuide, чтобы узнать, как это можно сделать.

 Смежные вопросы

  • Нет связанных вопросов^_^