LINUX.ORG.RU

История изменений

Исправление dimgel, (текущая версия) :

Вот допустим есть у нас hello.c, hello.o и hello. Если правило .o: .c отработало, но при этом hello.o не перекомпилялся потому что hello.c не изменился, то и hello из hello.o линковать не надо. Все правила отработали без ошибок, но и без выполнения команд. И на каждом шаге сравнивались mtime. А если mtime у .o: .c – закешированный ответ «готово», то бинарник будет пересобираться всегда.

И например вот это описание алгоритма работы make тоже как-то и с вашими ответами, и с описанным мною странным поведением слабо согласуется.

Исправление dimgel, :

Вот допустим есть у нас hello.c, hello.o и hello. Если правило .o: .c отработало, но при этом hello.o не перекомпилялся потому что hello.c не изменился, то и hello из hello.o линковать не надо. Все правила отработали без ошибок, но и без выполнения команд. И на каждом шаге сравнивались mtime.

И например вот это описание алгоритма работы make тоже как-то и с вашими ответами, и с описанным мною странным поведением слабо согласуется.

Исходная версия dimgel, :

Вот допустим есть у нас hello.c, hello.o и hello. Если правило .o: .c отработало, но при этом hello.o не перекомпилялся потому что hello.c не изменился, то и hello из hello.o линковать не надо. Все правила отработали без ошибок, но и без выполнения команд.

И например вот это описание алгоритма работы make тоже как-то и с вашими ответами, и с описанным мною странным поведением слабо согласуется.