primer make instalar hacer entre ejecutar diferencia como comando archivos makefile

instalar - Solo se ejecuta el primer comando de makefile



makefile linux c (2)

Tengo siguiente archivo MAKE

main.o: ServerSocket/main.cpp ../Shared/socket.h g++ -c ServerSocket/main.cpp -lstdc++ DriveInfo.o: ServerSocket/DriveInfo.cpp ServerSocket/DriveInfo.h ServerSocket/Consts.h g++ -c ServerSocket/DriveInfo.cpp -lstdc++ ProcessInfo.o: ServerSocket/ProcessInfo.cpp ServerSocket/ProcessInfo.h ServerSocket/Consts.h g++ -c ServerSocket/ProcessInfo.cpp -lstdc++ thread_pool.o: ServerSocket/thread_pool.cpp ServerSocket/thread_pool.h DriveInfo.o ProcessInfo.o thread_pool.o server: main.o g++ -o server main.o DriveInfo.o ProcessInfo.o thread_pool.o

El problema es que solo se está ejecutando un comando de ese archivo, así que si quiero ejecutar el siguiente <Tengo que eliminar o comentar el comando anterior. ¿Qué pasa con este archivo MAKE?


Haga ejecutar por defecto la primera regla que le proporcione.

Desea crear una regla que ejecute todas las reglas que proporciona

all : main.o DriveInfo.o ProcessInfo.o thread_pool.o

y colóquelo al comienzo de su Makefile o llámelo con make all


Esto es por diseño. Puedes decir qué objetivos construir:

make main.o DriveInfo.o

construirá estos dos objetivos. De forma alternativa, si desea make de forma predeterminada todos (o algunos) destinos, puede especificar una regla al comienzo del Makefile que indique que:

all: main.o DriveInfo.o …

Ahora, make all (o simplemente make ) construirá todos los targets dependientes. También es una buena práctica declarar all como un objetivo falso para decir que no corresponde a un archivo realmente existente. Haga esto poniendo .PHONY: all en el Makefile.

Una observación final, el nombre es arbitrario. Puede usar cualquier otro nombre aquí, pero all es convencional. La parte importante es que es la primera regla en tu Makefile si quieres que sea la que se ejecuta cuando llamas sin objetivos explícitos.