0
Рассмотрим следующий Makefile:Две цели без зависимостей
TARGET=fmake
TARGET2=test_second
fmake: $(TARGET2).c foo.c\
$(TARGET).c test.h clean
$(CC) -o $(TARGET) $(TARGET).c foo.c
$(CC) -o $(TARGET2) $(TARGET2).c
foo.c:
echo Some text
clean:
rm -f fmake test_second
CC=$(VAR2)
VAR2=gcc
После того, как команда make
Баш следующий дисплей
rm -f fmake test_second
gcc -o fmake fmake.c foo.c
gcc -o test_second test_second.c
Как сказал here foo.c не обрабатываются, потому что нет никаких зависимостей для этой цели. Но и foo.c
, и clean
не имеют зависимостей, но чистый processed
. Зачем?
Насколько я понял ваш ответ, сначала создайте инструменты 'make', которые ищут зависимости, объявленные в рассматриваемой цели, и если существуют зависимости, тогда начните обрабатывать один из них. Если для конкретной зависимости не существует правила, тогда начинайте обновление файла с именем dependencie. Если в нашей цели нет зависимостей, тогда 'make' ищет файл, имя которого является целевым именем. Если файл не найден, это правило обрабатывается. Правильно ли я понимаю? Но что с «целью по умолчанию»? Всегда ли обрабатывается цель по умолчанию? –
@Dmitrii: Проще говоря, Make только запускает правило для цели, если либо оно не существует (и не является ложным), либо «старше», чем его зависимости. Это правило применяется к * всем * целям, включая цели верхнего уровня. –
Большое спасибо! Теперь я это понимаю. –