Я бы хотел упростить рабочий процесс, чтобы вместо выполнения этих команд
$ make program_unittest
... output of $MAKE ...
$ ./program_unittest args
моя программа могла автоматически пытаться скомпилировать себя (если исходный код был обновлен) при запуске,так что мне не нужно возвращаться и бегать заставлять себя.
Вот что я думаю: моя сборка модульного теста должна сначала проверить, есть ли make-файл в каталоге, в котором он находится, и, если это так, форк и exec make
с целью, соответствующей самому себе.Если make
определит «ничего не делать», оно продолжит свой путь (выполнение юнит-тестов).Однако, если make
действительно выполняет компиляцию, может произойти одно из двух.gcc
(вызывается make
) может перезаписать сборку (более старая версия которой уже запущена) во время компиляции, и в этом случае я, возможно, смогу ее выполнить.Если моя система не разрешает gcc
перезаписывать используемую программу, я должен выйти из программы перед запуском make
.
Так что это уже стало довольно сложным делом.Возможно, есть более элегантные решения?Может быть, я мог бы использовать скрипт bash?Как мне узнать, были ли make
введены команды компиляции или нет?