170 похожих чатов

Привет, чатик! У меня вопрос по gnu make. Основная фича make, насколько

я понимаю - это перекомпиляция при изменении зависимостей. Зависимости таргета могут быть перечислены после двоеточия.

Обычно под изменением зависимости подразумевают изменение содержимого файла на который ссылается таргет. make проверяет это только при помощи времени модификации файла.

Иными словами, если зависимость моложе таргета, то таргет будет выполнен.


Вопрос: а есть ли другие случаи, когда тригерится таргет?

13 ответов

17 просмотров

поменялся хидер, на который этот сишник ссылается

Andrey-Enshin Автор вопроса
Alex
поменялся хидер, на который этот сишник ссылается

А почему это именно другой случай, не описанный мною выше, когда меняется файл и соответственно его атрибут "время изменения"?

В @probuildsystems

Andrey Enshin
А почему это именно другой случай, не описанный мн...

#include "file.h" int main(){ printf("Hello"); return 0; } А меняешь file.h. Насколько я помню, make умеет вытаскивать список зависимостей (инклюдов) из gcc/clang (возможно спец опциями компиляторов) и отслеживать их изменение. Не факт, что это будет сделано явно (не помню)

Andrey-Enshin Автор вопроса
Alex
#include "file.h" int main(){ printf("Hello"); ...

Интересно, понял. Ты наверное пытаешься сказать об автоматической генерации правил и, возможно, о неявных таргетах. Есть такое, да. Например, gcc может cc -M main.c сгенерировать такое правило: main.o : main.c file.h https://www.gnu.org/software/make/manual/html_node/Automatic-Prerequisites.html А за счёт неявных правил тебе не нужно писать правило для main.c https://www.gnu.org/software/make/manual/html_node/Implicit-Rules.html Однако в итоге make будет руководствоваться временем модификации файла (хедер или .c). Мне же интересно вот что: существуют ли другие поводы, кроме более свежего времени модификации зависимости, для запуска правила?

Andrey Enshin
Интересно, понял. Ты наверное пытаешься сказать об...

https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html - тут есть какие-то доп правила для Yacc & Bison. Да и в принципе описано то, как оно работает

Andrey-Enshin Автор вопроса
Alex
https://www.gnu.org/software/make/manual/html_node...

Да, это документация по make. Неплохо кстати написано. Рекомендую. Если вдруг кто-то знает/сталкивался с запуском правила не потому что время файла новее, будет интересно узнать.

Andrey-Enshin Автор вопроса

Хорошо, спасибо. А почему?

Andrey Enshin
Хорошо, спасибо. А почему?

потому что портянку на make легко заменяет cmake в 10 строк и он намного понятее чем ручное жонглирование зависимостями а если надо что-то специфическое - генераторы, etc все достаточно просто делается

Alex
потому что портянку на make легко заменяет cmake в...

Портянку на мейке для локальной сборки обычно заменяет цмак в 2-3 строки, и только если надо что-то более серьезное там размер растет.

Andrey-Enshin Автор вопроса
Alex
потому что портянку на make легко заменяет cmake в...

Понял, спасибо. Интересно. Пока выбрасываю make, процесс не очень быстрый, всё же позволю себе немного поискать случаи запуска правила, когда время модификации зависимости не поменялось. Интересно всё-таки :)

Andrey Enshin
Понял, спасибо. Интересно. Пока выбрасываю make, ...

ну это вам решать. но будете смотреть на cmake - то все начиная с версии 3, когда появились нормальные таргеты

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта