2010-03-26 4 views
0

dans un Makefile, j'ai:script Exécuter avant la compilation dans le Makefile

all: $(PROG) 

$(PROG): $(CPP_OBJS) 
     $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG) 

Je voudrais ajouter un script avant la compilation alors j'ai essayé:

all: $(PROG) 

$(PROG): $(CPP_OBJS) 
     sh script.sh ; $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG) 

mais il ne fonctionne pas.

Quelle est la bonne façon d'exécuter un script dans ce cas avant la compilation?

Merci

+0

Avez-vous essayé './script.sh; $ (CPP_LD) ... '? –

Répondre

2

Placez l'exécution du script sur une ligne distincte.

$(PROG): $(CPP_OBJS) 
     sh script.sh 
     $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG) 

Ceci est dû au fait que make est assez stupide et ne comprend pas les points-virgules comme vous le souhaitez. Bonne chose que les nouvelles lignes ne coûtent pas cher!

0

Je pense que vous pouvez simplement utiliser plusieurs cibles, mais cela ne va pas exécuter le script si $ (PROG) est utilisé à la place de tous comme cible.

all: $(SCRIPT) $(PROG) 

$(SCRIPT): 
     sh myScript.sh 

$(PROG): $(CPP_OBJS) 
     $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG) 

Sinon, vous pouvez utiliser des lignes séparées, qui seront toujours appliquées.

$(PROG): $(CPP_OBJS) 
     sh myScript.sh 
     $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG) 
Questions connexes