2008-11-20 9 views
1

J'ai un makefile qui fonctionne avec mingw32. Maintenant, j'ai renommé ce makefile à Makefile.w32 (source ->http://pastie.org/319964)Créer un makefile pour plusieurs OS, ce make (ext?) Ne fonctionne pas?

Maintenant, j'ai un Makefile avec ce qui suit. Le problème est, il ne construit pas ma source

all: 
    make mingw32 

clean: 
    @echo "causes an infinite loop -> make mingw32 clean" 

mingw32: 
    @echo "yeahhhhhhhhh" 
    make Makefile.w32 

mingw32-clean: 
    @echo "mingw clean" 
    make Makefile.w32 clean 

Résultat:

> "make" 
make mingw32 
make[1]: Entering directory `/c/nightly/test' 
yeahhhhhhhhh 
make Makefile.w32 
make[2]: Entering directory `/c/nightly/test' 
make[2]: Nothing to be done for `Makefile.w32'. 
make[2]: Leaving directory `/c/nightly/test' 
make[1]: Leaving directory `/c/nightly/test' 

Il me semble qu'il n'aime pas l'extension Makefile.w32. Je ne comprends pas pourquoi il ne construit pas. Il est évident que j'arrive à ma ligne "make Makefile.w32".

Répondre

3

« make Makefile.w32 » recherche un cible nommé Makefile.w32, pas un fichier de marque par ce nom. Pour exécuter faire et lui dire de lire le fichier makefile « Makefile.w32 », utilisez le commutateur -f:

make -f Makefile.w32 

Modifier: Soit dit en passant, pourquoi lancez-vous une instance distincte de faire dans le « tout » target, si tout ce que vous voulez, c'est que "all" dépende de la cible "mingw32" dans le même fichier make? Il serait mieux, à mon humble avis, de la déclarer comme cible dépendante à la place:

all: mingw32 

De même avec "propre" et "mingw32-clean":

clean: mingw32-clean 
0

Vous pouvez utiliser cmake pour générer makefiles . Cela devrait fonctionner sur la plupart des plates-formes.

Questions connexes