1

Есть ли какая-либо утилита для отслеживания изменений файлов и запуска GNU make?

Или, в более общем смысле, периодически вызывать команду, когда какой-либо файл изменяется? или Makefile содержит интервал проверки?

4 ответа4

1

Да, есть способы сделать это, но вы не указали свою платформу.

Если задействованы make и source, то должна быть задействована система контроля версий, и современные VCS имеют "зацепки", которые могут запускать сборку на основе определенных действий VCS.

Произвольная попытка сборки, основанная только на том, что "источник изменился", является очень простым способом создания сборок, которые не работают.

добавлено на основе комментария:

Я предполагаю, что вы пришли из среды IDE и привели с собой некоторые вредные привычки. Вы должны тратить много времени на размышления, немного времени на кодирование и редко компилировать. В противном случае генерируется неаккуратный код, который будет несчастлив для вас и следующего парня, так что не делайте этого.

Кроме того, ничто не мешает вам использовать Git или Mercurial для ваших собственных локальных изменений и подталкивать к Subversion, когда у вас есть что-то достойное для центрального репозитория, в то же время защищенное от ваших собственных плохих изменений.

Тем не менее, я настоятельно рекомендую вам не использовать ваш компилятор для проверки ошибок. Вы будете хуже программиста, если вы это сделаете.

1

Какая платформа? Вы можете вызывать следующую строку в оболочке Bourne или bash, например, для запуска make каждые 60 секунд. Если ваш Makefile спроектирован правильно, он выйдет без изменений, если файлы не были изменены:

пока правда; сделать; сон 60; сделанный

Если вы пытаетесь скомпилировать код в том виде, в котором он зарегистрирован, взгляните на "Непрерывную интеграцию" Пола Дюваль, Эддисон Уэсли. В нем изложены инструменты и методы для этого.

1

периодически вызывать команду при изменении какого-либо файла

Вы можете сделать это с помощью Incron. Чтобы предотвратить циклы, создайте вне исходного дерева, проверьте, что измененный файл находится под контролем источника, или используйте опцию IN_NO_LOOP.

0

Вы можете установить какую-то задачу cron, чтобы сделать это через определенный интервал.

Или напишите сценарий оболочки, который использует цикл опроса, чтобы проверить, были ли файлы изменены. Тогда либо спи, либо беги make. Вы бы запустили это как демон или в фоновом режиме вашего сеанса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .