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 c ET c++


Sujet :

Systèmes de compilation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut makefile pour c ET c++
    Bonjour

    Je suis en train d'écrire un makefile pour compiler un projet qui contient
    à la fois des fichiers c et des fichiers c++.

    j'ai créé des variables SRC_C et SRC_CPP qui contiennent la liste
    des .o à compiler avec l'un ou l'autre des compilateurs mais j'ai un pb
    quand il est question de dire comment compiler les .o . En effet, les fichiers
    objets de c et de c++ portent la mm extension .o. Si je fait qq chose du
    genre :

    1- comment dire que certains doivent valider la date du .o avec un fichier .c
    ou un fichier .cpp ?
    2- comment compiler les uns avec gcc et les autres avec g++ ?

    J'ai bien imaginé faire 3 makefile dont un appelle les deux autres mais j'aurai
    préféré tout en un.

    Merci
    Julien

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Salut,

    pourquoi ne pas utiliser directement g++ pour la compilation de tes fichiers C ?

    Sinon voici un Makefile que j'utile actuellement et qui compile tout les fichiers d'un dossier et cree les objets dans un autre dossier :
    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
    24
    25
    26
    BIN_DIR =	bin/
    OBJ_DIR =	obj/
    SRC_DIR =	src/
    INC_DIR =	include/
     
    #files
    BIN =	${BIN_DIR}server
    SRC =	${wildcard ${SRC_DIR}*.c}
    OBJ =   ${SRC:${SRC_DIR}%.c=${OBJ_DIR}%.o}
     
     
    #flags
    CFLAGS =	-g -W -Wall
    IFLAGS =	-I${INC_DIR}
     
    #Compiler
    CC =		gcc
     
    #rules
    all:		${BIN}
     
    ${BIN}:		${OBJ}
    		${CC} $^ -o ${BIN}
     
    ${OBJ_DIR}%.o:	${SRC_DIR}%.c		
    		${CC} ${IFLAGS} ${CFLAGS} -c $< -o $@
    Tu pourrais créer un dossier separe pour tes sources c et cpp, rajouter une regle pour les fichiers cpp et creer les .o dans le meme dossier, ou bien éditer les regles courantes afin de les adapter a tes listes de fichiers sources, tout en conservant le dossier de destination ou seront cree tes .o.

    Pour la formation C++ :

    Cours et tutoriels C++.
    La FAQ C++.
    Le Forum C++.

Discussions similaires

  1. 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
  2. makefile pour gtk
    Par troumad dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 28/03/2007, 08h23
  3. makefile pour des fichiers lex et yacc
    Par samarensi dans le forum Linux
    Réponses: 1
    Dernier message: 25/12/2006, 09h27
  4. makefile pour code divisé en module
    Par mencaglia dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/12/2006, 12h05
  5. Makefile pour bibliothèque graphique
    Par Hyuge dans le forum Ada
    Réponses: 3
    Dernier message: 23/10/2006, 02h12

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