Ваша цель по умолчанию в make-файле:
loop: loopcomp looptest
. Это говорит make
, что для сборки loop
необходимо сначала убедиться, что loopcomp
и looptest
обновлены, итогда он должен найти способ построить loop
.Поскольку существует файл loop.c
, он вызывает правило по умолчанию %.c:
для построения loop
:
gcc -Wall loop.c loopcomp looptest -o loop
Это включает в себя два файла (программы), которые, как вы сказали, зависят от loop
.
Пока у вас есть loop.c
, я думаю, что вы, вероятно, столкнетесь с этой проблемой.
Кажется, в makefile
нет способа сказать "неиспользовать любые встроенные правила ".Если это так, вы ожидаете, что это будет «Специальное имя встроенной цели» (§4.8 Руководства по GNU Make для версии 3.82), например .DEFAULT
.
Ваша единственная оставшаяся надежда -что объявление .PHONY: loop
может подавить это.В противном случае переписать целевое правило по умолчанию следующим образом:
check-loop: loopcomp looptest
Это ошеломляет makefile
.Портировать это на что-либо кроме GNU make
не будет тривиальным.