c++ - compiler - Cómo MAKE sabe qué archivo fuente verificar
makefile java (2)
Ya se proporcionaron enlaces de documentación obvia. Solo quería comentar tu ejemplo. Usted dijo que haga lo siguiente:
El archivo hellomake
basa en hellomake.o
y hellofunc.o
, es decir. ambos son requisitos previos de hellomake
. Si algún requisito previo cambia desde la última compilación, se reconstruirá hellomake
. Cómo se hace (re) construcción es la segunda línea, es decir. la invocación de gcc.
Para responder a su pregunta: El fragmento proporcionado no buscará ningún archivo cpp. Necesitas diferentes reglas además para eso, es decir. algo como
%.o: %.cpp
gcc -I. -c @< -o $@
En caso de que esté buscando un Makefile bastante genérico para empezar, lo recomendaría. Ha sido la base para muchos de mis Makefiles en uso.
¿Cómo este script simple make
sabe que algunos de los archivos cpp han cambiado? ¿Significa que para cada archivo .o buscará el correspondiente .cpp uno? ¿Qué sucede si la extensión será diferente? Por ejemplo, .c
hellomake: hellomake.o hellofunc.o
gcc -o hellomake hellomake.o hellofunc.o -I.
UPD: De acuerdo con mi comprensión, las escrituras que proporciono no deberían mirar los archivos c y cpp. Y cuando pedí construir el proyecto por segunda vez, MAKE
me dijo "make: ''hellomake'' está actualizado. Pero me sorprendió cuando cambié a hellomake.cpp
MAKE ha decidido reconstruir el proyecto. ¿Por qué?
GNU make tiene muchas reglas incorporadas. Ejecuta make -p
para encontrarlos. Y usa las reglas existentes en tu Makefile
, mira esto o aquello o esto