при чтении страницы man scons, мое понимание было, scons не всегда понимает, когда файл заголовка изменен, исходные файлы cpp также должны измениться. Я сделал эксперимент, но только для того, чтобы определить, есть ли у нас CPPPATH или нет, кажется, что scons всегда обнаруживает изменения файла заголовка и применяет пересоздание соответствующих исходных файлов.CPPPATH, похоже, не работает со счётами?
К примеру, у меня есть файл ос и заголовки/каталог, содержащий файл: Nh
#include"headers/n.h"
#include<stdio.h>
int main(){
printf("hello\n");
return 2;
}
И мой SCons SConstruct как это:
Program('o.c')
Когда я изменить содержание пи , scons будет восстанавливать файл oc. Это довольно удивительно для меня. Я пытался изменить SConscript так:
Program('o.c',CPPPATH='.')
На этот раз, я надеюсь, что SCons будет проверять только файлы заголовков под землей, но не под ./headers «». Тем не менее, scons перестраивает o.c
Я переместил заголовки/в другое место выше "." каталог и изменил o.c, чтобы включить его с абсолютным путем. Когда я изменяю пН, еще Scons восстановим Ос
Мои вопросы:
(1) Как SCons сканирование и определить, если заголовочный файл изменился, это называют Gcc передний конец или препроцессор, чтобы сделать это ? Если это так, похоже, это дублированная работа с компиляцией, правильно?
(2) Я не считаю, что спецификация CPPPATH полезна: будет ли она указана, сканирование будет сканировать. Даже когда я говорю CPPPATH = ".", Scons, похоже, сканирует другие каталоги.
Почему? Это по дизайну? Если да, то какое использование CPPPATH вообще?
Один вопрос на, um, вопрос пожалуйста. –
+1 для «только одного вопроса» ... и, пожалуйста, прекратите утверждать, что «Сконды, похоже, не работают». Это справедливо, если вы скажете: «Скотты не ведут себя так, как ожидалось». но тогда это должно включать ссылку на документацию и предпочтительно «минимальный рабочий пример», чтобы четко продемонстрировать отклонение. Просто заявляя, что SCons ведет себя иначе, чем вы ожидаете, а затем задавая «почему» вопросы об этом, вероятно, не очень помогает другим пользователям. – dirkbaechle