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 avec librairies en option


Sujet :

Systèmes de compilation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Chercheur (Physique)
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur (Physique)

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Par défaut [Résolu] Makefile avec librairies en option
    Bonjour,

    Je souhaiterais écrire proprement un Makefile dans lequel certaines bibilothèques ne seraient appelées que si nécessaire.

    Concrêtement, j'ai un programme C++ qui produit un simple fichier texte en sortie. Pour ma convenance personnelle, j'ai ajouté en parallèle la création d'un fichier ROOT qui est rempli avec les mêmes données mais au format ROOT.

    Pour créer ce fichier ROOT, je fais appel aux librairies ROOT pour définir des objets nécessaires à ce fichier.

    J'ai utilisé des #ifdef/#endif dans les .cpp et un "-D" au niveau du CCFLAGS dans le Makefile pour pouvoir simplement choisir si je veux un fichier ROOT en plus de mon simple fichier texte.

    A présent, je souhaiterais que le Makefile ne prenne en compte les librairies ROOT que si je veux créer un fichier ROOT. Ainsi, si je passe mon code à quelqu'un qui n'a pas ROOT, je ne veux pas que la compilation échoue et qu'il ne puisse pas obtenir le fichier texte car à la compilation on lui réclame des librairies qu'il n'a pas et dont il n'a pas besoin.

    Est-ce possible ? Comment le faire proprement ?

    D'avance, merci.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Code conditionnel dans le fichier makefile, et concaténation / remplacement des champs en fonction de la cible choisie (CPP seul ou ROOT+CPP), c'est le plus simple à mon avis...

    Regarde du côté de "ifdef/ifndef/ifeq/endif" pour un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ifeq ($(ROOT),yes)
    # ou ifdef ROOT
    LIBROOTFLAG=-lROOT
    INCROOTFLAG=-I /usr/lib/ROOT
    else
    LIBROOTFLAG:=
    INCROOTFLAG:=
    endif
    Et dans la ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CPPFLAGS= (..... tous les flags non-liés au ROOT ........) $(INCROOTFLAG)
    LINKFLAG= (..... tous les flags non-liés au ROOT ........) $(LIBROOTFLAG)
    A affiner en fonction de ton makefile et de tes cibles, bien sûr.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/05/2014, 11h13
  2. Création d'un makefile avec une librairie externe
    Par sisi_06 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/05/2014, 17h09
  3. changer une option dans un makefile avec un script bash
    Par dedey63 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/07/2012, 13h56
  4. [Makefile] Compilation avec librairie Mysql
    Par lexase dans le forum Systèmes de compilation
    Réponses: 8
    Dernier message: 09/02/2007, 18h42
  5. [Makefile] Compilation avec librairie ncurses
    Par Kerod dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 13/01/2007, 01h52

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