Я изучаю make-файл GNU. Я наткнулся на эту страницу: http://mrbook.org/blog/tutorials/make/Что означает «.cpp.o:» в файле Makefile?
В конце этой статьи, я нашел это:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o [email protected]
.cpp.o:
$(CC) $(CFLAGS) $< -o [email protected]
Может кто-нибудь объяснить, что в переменной OBJECT и какую цель .cpp.o:
средства (а также $<
в нем)?
Я также обнаружил, когда я использую что-то вроде:
SRC = $(wildcard $(SRC_DIR)*.c)
SRC_OBJS = $(patsubst %.c, %.o, $(SRC))
и использовать «$ (SRC_OBJS)» в качестве цели, он будет собирать все объекты для каждого требуемого объекта. Это не происходит для первого. Какая разница?
Спасибо, что дали мне имя, я искал «правило суффикса» и видел, что это хорошо объяснено в документе GNU. Это решило мою проблему. –
@MingchenZhang Отлично! Следующим шагом в Stackoverflow является поддержка/принятие ответа, который вы считаете наиболее полезным (иногда есть минимальное время, прежде чем вы сможете это сделать, или минимальная репутация). – Jens