2011-02-07 5 views
0

J'ai des bibliothèques statiques C++ et un exécutable qui les utilise, chacune se trouve dans un dossier séparé. Chaque tel projet peut être construit en débogage ou configuration version, lorsque la hiérarchie des fichiers est comme ce qui suit: Static_Lib1 \ Debug \ staticlib1.a
Static_Lib1 \ Release \ staticlib1.a
// même pour toutes les autres bibliothèques statiques
Exécutable \ Debug \ exécutable
Exécutable \ Libération \ exécutableMise à jour des variables dans l'étiquette du fichier makefile

Tous les dossiers de débogage et de publication contiennent des fichiers Make.
J'essaye d'écrire un makefile externe pour appeler chacun des projets internes, en utilisant la configuration choisie - debug ou release.
Alors, j'ai essayé quelque chose comme:

CFG= #empty declaration 
PROJECTS=Static_Lib1 Static_Lib2 ... Executable 
all: 
    release #default config is release 

release: 
    CFG = Release 
    make build-all 

debug: 
    CFG = Debug 
    make build-all 

build-all: 
    make clean 
    $(foreach projectName, $(PROJECTS), cd $(projectName)/$(CFG) && make all;) 

Mais je reçois cette sortie en essayant, par exemple, pour exécuter make debug:

CFG = Debug 
make: CFG: Command not found 
make: *** [debug] Error 127 

Comment puis-je résoudre ce problème?
Mon système d'exploitation est SLED 11x64.

Merci d'avance!

Répondre

1

Modifier à:

... 

release: 
    make CFG=Release build-all 

debug: 
    make CFG=Debug build-all 

... 
+0

Merci beaucoup! –

+0

C'est inutile. Tout ce qui fait est de rappeler le makefile. Vous pouvez également vous débarrasser des cibles de lancement et de débogage et appeler 'make CFG = WHATEVER build-all' directement –

Questions connexes