IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

Makefile pour Linux ou windows


Sujet :

Systèmes de compilation

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut Makefile pour Linux ou windows
    Bonjour

    J'essaie de faire un seul makefile pour faire de la compilation (croisée ou non) d'un même programme. Voici mon ensemble de fichiers :

    Le makefile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    all: option
     
    option:
    	@echo "option mrproper et clean pour nettoyer plus ou moins"
    	@echo "option windows ou win pour créer un exécutable windows"
    	@echo "option linux ou lin pour créer un exécutable linux"
     
    windows:
    	make -f makefile.windows
     
    win:
    	make -f makefile.windows
     
    lin: 
    	make -f makefile.linux
     
    linux: lin
     
    clean:
    		rm *.o *.org
     
    mrproper: clean
    		rm perso.exe perso
    Le makefile.linux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CC=gcc
     
     CFLAGS= -Wshadow  -Winit-self  -Wredundant-decls  -Wcast-align  -Wundef  -Wfloat-equal  -Winline  -Wunreachable-code  -Wmissing-declarations  -Wmissing-include-dirs  -Wswitch-enum  -Wswitch-default  -Wmain  -Wall  `pkg-config gtk+-3.0 --cflags` -export-dynamic
     
      LDFLAGS=`pkg-config gtk+-3.0 --libs` -export-dynamic  -lzip -lm
     
       EXEC=perso
       SRC= $(wildcard *.c)
    OBJ= $(SRC:.c=.o)
     
    all: $(EXEC)
     
    $(EXEC) : $(OBJ)
    		$(CC) -o $@ $^ $(LDFLAGS)
     
     
    %.o: %.c
    		$(CC) -o $@ -c $< $(CFLAGS)
    Le makefile.windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CC=i686-w64-mingw32-gcc
     
     CFLAGS= -Wshadow  -Winit-self  -Wredundant-decls  -Wcast-align  -Wundef  -Wfloat-equal  -Winline  -Wunreachable-code  -Wmissing-declarations  -Wmissing-include-dirs  -Wswitch-enum  -Wswitch-default  -Wmain  -Wall  `i686-w64-mingw32-pkg-config gtk+-3.0 --cflags` -export-dynamic -mwindows  
     
      LDFLAGS=`i686-w64-mingw32-pkg-config gtk+-3.0 --libs` -lzip -mwindows -Wl,--export-all-symbols
     
       EXEC=perso.exe
       SRC= $(wildcard *.c)
    OBJ= $(SRC:.c=.org)
     
    all: $(EXEC)
     
    $(EXEC) : $(OBJ)
    		$(CC) -o $@ $^ $(LDFLAGS)
     
    %.org: %.c
    		$(CC) -o $@ -c $< $(CFLAGS)
    Pour pouvez remarquer que pour une meilleure cohabitation, les objets de linux sont en .o et ceux de windows en .obj. Ceci me permet de compiler pour l'un ou pour l'autre. Mais, j'ai un problème, un petit problème : "makefile win" ne marche pas ! C'est à dire que pour luii, il n'y a rien à faire. Pourquoi ?

    Regardez si dessous pour bien saisir ce que je veux dire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [troumad@localhost perso]$ make win
    make: «*win*» est à jour.
    [troumad@localhost perso]$ make windows 
    make -f makefile.windows
    make[1]*: on entre dans le répertoire «*/home/troumad/Documents/add/perso*»
    i686-w64-mingw32-gcc -o utile.org -c utile.c -Wshadow  -Winit-self  -Wredundant-decls  -Wcast-align  -Wundef  -Wfloat-equal  -Winline  -Wunreachable-code  -Wmissing-declarations  -Wmissing-include-dirs  -Wswitch-enum  -Wswitch-default  -Wmain  -Wall  `i686-w64-mingw32-pkg-config gtk+-3.0 --cflags` -export-dynamic -mwindows
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    L'erreur venait de la présence d'un répertoire win dans l'espace de travail. J'ai du rajouter en début de makefile :
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. choisir un moteur physique pour linux et windows
    Par Asmod_D dans le forum Physique
    Réponses: 15
    Dernier message: 09/05/2008, 19h38
  2. Delphi pour Linux et Windows
    Par Jiyuu dans le forum Débuter
    Réponses: 4
    Dernier message: 17/11/2007, 09h50
  3. Réponses: 3
    Dernier message: 23/05/2007, 00h03
  4. Compiler en C à partir de windows en manuel (makefile) pour Linux
    Par _SamSoft_ dans le forum Autres éditeurs
    Réponses: 11
    Dernier message: 06/04/2007, 17h12
  5. ORB pour Linux et Windows
    Par slyer dans le forum CORBA
    Réponses: 1
    Dernier message: 18/05/2006, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo