我被要求做一個makefile,我已經做到了這一點:這個Makefile是否正確?
# La siguiente no es necesariamente requerida, se agrega para
# mostrar como funciona.
.SUFFIXES: .o .c
.c.o:
$(CC) -c $(CFLAGS) $<
# Macros
CC = g++
CFLAGS = -Wall -Wextra -Werror -pedantic
SRC = main.c metbasicos.c metbasicos.h metintermedios.c metintermedios.h metavanzados.c metavanzados.h
OBJ = main.c metbasicos.c metintermedios.c metavanzados.c
# Reglas explicitas
all: $(OBJ)
$(CC) $(CFLAGS) -o p1 $(OBJ)
clean:
$(RM) $(OBJ) main
# Reglas implicitas
metbasicos.o: metbasicos.c metbasicos.h
metintermedios.o: metintermedios.c metintermedios.h
metavanzados.o: metavanzados.c metavanzados.h
main.o: main.c metbasicos.h metintermedios.h metavanzados.h
它是正確的嗎?
編譯我通常使用下面的命令:
g++ -Wall -Wextra -Werror -pedantic main.c metbasicos.c metintermedios.c metavanzados.c -o p1.exe
,如果我做了一些測試,與:
make
./p1 < input.txt
工作正常,但我不知道這是否是一個正確的實施。
有人可以告訴我,如果我犯了一些嚴重的錯誤?
非常感謝。
你爲什麼試圖重新定義規則將.C成的.o? –
@ IgnacioVazquez-Abrams因爲我使用makefile作爲模板,來自另一個人,我對它們的工作原理有一點點想法......你能告訴我哪些行是不必要的嗎? – Gera