LINUX.ORG.RU

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

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

Ну вот тут например правило .o: .c будет отрабатывать каждый раз при запуске make, даже если ничего не менять, ведь make будет считать .o устаревшим. И каждый раз твой костыль будет предотвращать компиляцию, но поскольку это именно костыль - make об этом ничего не знает. А мог бы знать, если б это его внутренняя проверка была. А если .c изменился, но .o не изменился (а дата компиляции новая стала)? Тоже ж не надо линковать.

Можно в правило для линковки добавить костыль: сравнивать сначала дату .o с бинарником, и если дата .o больше - сравнивать ещё и хеш .o с где-то сохранённым, как ещё один шанс пропустить линковку. Правда если везде такое сделать, то алгоритмы make для выбора что именно пересобирать окажутся немного отодвинуты, вместо них будут эти.

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

Ну вот тут например правило .o: .c будет отрабатывать каждый раз при запуске make, даже если ничего не менять, ведь make будет считать .o устаревшим. И каждый раз твой костыль будет предотвращать компиляцию, но поскольку это именно костыль - make о этом ничего не знает. А мог бы знать, если б это его внутренняя проверка была. А если .c изменился, но .o не изменился (а дата компиляции новая стала)? Тоже ж не надо линковать.

Можно в правило для линковки добавить костыль: сравнивать сначала дату .o с бинарником, и если дата .o больше - сравнивать ещё и хеш .o с где-то сохранённым, как ещё один шанс пропустить компиляцию. Правда если везде такое сделать, то алгоритмы make для выбора что именно пересобирать окажутся немного отодвинуты, вместо них будут эти.

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

Ну вот тут напримео правило .o: .c будет отрабатывать каждый раз при запуске make, даже если ничего не менять, ведь make будет считать .o устаревшим. И каждый раз твой костыль будет предотвращать компиляцию, но поскольку это именно костыль - make о этом ничего не знает. А мог бы знать, если б это его внутренняя проверка была. А если .c изменился, но .o не изменился (а дата компиляции новая стала)? Тоже ж не надо линковать.

Можно в правило для линковки добавить костыль: сравнивать сначала дату .o с бинарником, и если дата .o больше - сравнивать ещё и хеш .o с где-то сохранённым, как ещё один шанс пропустить компиляцию. Правда если везде такое сделать, то алгоритмы make для выбора что именно пересобирать окажутся немного отодвинуты, вместо них будут эти.