Disons que j'ai des fichiers:Comment définir des règles dans le Makefile pour compiler uniquement que les fichiers * .cpp qui a été modifié (et leurs dépendances), et non pas tous les fichiers * .cpp
Libs:
- one.cpp, one.h
- two.cpp, two.h
- three.cpp, three.h
Programme:
- program.cpp
Y at-il moyen, pour créer Makefile qui compilera seulement * .cpp qui ont été modifiés depuis la dernière compilation?
Actuellement, j'ai quelque chose comme ça:
SRCS = one.cpp two.cpp three.cpp
OBJS = $(SRCS:.cpp=.o)
all: $(OBJS) program
.cpp.o:
g++ -Wall -c $<
program:
g++ -Wall $(OBJS) program.cpp -o program
clean:
rm -f $(OBJS) program
je fonctionne très bien, mais quand je compile mon programme, puis changer two.cpp ou two.h je dois exécuter « make clean » Tout d'abord, parce que quand Je lance d'autre part « make » je reçois:
Nothing to be done for 'all'.
Je voudrais changer mon Makefile de cette façon, il reconnaîtrait mes changements et recompiler ce fichier et ses dépendances (si one.cpp utilise le code de two.cpp qui a été modifié, les deux fichiers doivent être recompilés).
Donc, si je modifie two.cpp, faire devrait faire:
g++ -Wall -c two.cpp
g++ -Wall $(OBJS) program.cpp -o program
Mais si one.cpp utilise le code de two.cpp qui a été modifié, faire Shold faire:
g++ -Wall -c one.cpp
g++ -Wall -c two.cpp
g++ -Wall $(OBJS) program.cpp -o program
(Je pense que vous voulez dire 'one.cpp', pas' first.cpp'.) – Beta
Oui, ça devrait être one.cpp. – user360872