Здравствуйте!
Как можно найти правило, по которому выполняется действие?
У меня есть makefile
KEYS := -g -Wall
LIBS := -L. -lmy
LIBNAME := libmy.a
all: ${LIBNAME} ${OUT}
%.out: %.o
${CXX} $^ ${KEYS} ${LIBS} ${F} -o $@
%.o: %.cxx
${CXX} -c $^
clean:
rm -rf *.o *.out *.core *.a
#
# CREATING MY LIBS
#
LIBFILES := mycstring.o
${LIBNAME}: ${LIBFILES}
ar cr $@ $^
ranlib $@
где переменные F и OUT задаются через параметры в gmake.
Я набираю в командной строке:
[18:47] ~/practise> gmake clean ; gmake OUT=t.out
rm -rf *.o *.out *.core *.a
g++ -c mycstring.cxx
ar cr libmy.a mycstring.o
ranlib libmy.a
g++ -c t.cxx
g++ t.o -g -Wall -L. -lmy -o t.out
rm t.o
и вы можете видеть действия, которые были выполнены.
Вопрос почему выполняется самое последнее действие rm t.o?
Я просматривал все шаблонные правила командой gmake -p но ничего похожего не было. Я могу его показать при вашем желании, сейчас его не копирую, так как он большой.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
И если можно, напишите где вы узнали ответ на этот вопрос.
t.o в данной ситуации выступает в роли промежуточного (intermediate) файла, и make его удаляет наплевав на рулесы.
ответ на вопрос написан в `info make’, а нашёл я его так:
собственно отсюда я узнал слово intermediate, и поискал его в index’е мануала make.
большое спасибо!