2010-01-28 9 views
0

J'ai posté les bits pertinents de mon makefile. Lorsque je cours make all sur ce makefile, il y a une erreur de compilation lors de la compilation debugosd.o. Cependant, parce que make a trouvé debugosd.o précédemment construit, il continue simplement à construire dialup.otz.Comment puis-je forcer à quitter si la compilation d'une dépendance échoue?

Sans supprimer tous les .o, comment puis-je forcer debugosd.o à devenir obsolète - et ainsi forcer make à s'arrêter dès qu'il rencontre l'erreur de compilation dans debugosd.o?

La règle pour créer des fichiers .o est:

%.o: %.c 
    $(TITLE) 
    $(CC) $(COMPILE) $(C_OPTIONS) -c $< 

Et l'extrait makefile est:

all: shared0.flw shared1.flw shared2.flw shared3.flw 

debugosd.o: debugosd.c debugosd.h 
xdialler_interface_new.o: xdialler_interface.h 
dialup.ooo: xdialler_interface_new.o debugosd.o xDialler.a 
    $(TITLE) 
    $(MAKE_OOO) 

dialup.otz: dialup.ooo 
    $(BIN)opress $< 

shared1.dir: dialup.otz 
    $(TITLE) 
    $(BIN)dirbuild $(SHAREDDIR1_OPTIONS) 

shared1.flw: shared1.dir 
    $(TITLE) 
    $(BIN)flwbuild $(SHAREDFLW_OPTIONS1) 

En fait, je compris quel était le problème. Je forçais la reconstruction de shared1.flw en utilisant une cible bidon. Je pense que cela forçait make à continuer malgré les erreurs.

+0

Étrange, je pensais faire déjà faire cela. – Pace

+0

Oui, moi aussi - make continue de construire shared2.flw et shared3.flw. – BeeBand

Répondre

1

Vous n'avez pas de sous-commandes spécifiques répertoriées pour debugosd.o, donc je suppose qu'il utilise la valeur par défaut, quelque part (comme .c.o). Make devrait se terminer si l'une des sous-commandes renvoie un code de sortie différent de à moins que la commande ne commence par -. Vérifiez la commande utilisée pour la cible dubugosd.o.

Si un fichier précédemment construit ne devrait pas avoir d'importance, make ne devrait pas continuer après une condition d'erreur.