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

Delphi Discussion :

Création d'un makefile pour compilation automatique


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut Création d'un makefile pour compilation automatique
    Bonjour,
    je suis sur le point de créer un Makefile pour compilation automatique d'une liste de projets.

    j'ai vu sur le site les différentes étapes à faire mais les explications ne sont pas très poussées.

    j'arrive à compiler un projet automatiquement sans problème, mais comment je dois m'y prendre si mes unités .pas utilisent des objets qui se trouvent ailleurs? dois-je les énumérer une à une pour compiler chaque projet?? où il ya un moyen pour définir tous les chemins d'un coup dans le makefile??

    merci

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    au moins qqn sait-il s'il faut mettre les dépendances avant ou après les cibles??

    ou un lien vers un exemple de MakeFile à part celui qui existe sur le site


    merci

  3. #3
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    As-tu lu ceci : Build automatique avec Make ?
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    oh que oui

    d'ailleurs c'est presque la seule documentation sur ce sujet, mais je répète que ce n'est pas du tout poussé et qu'on y explique juste les démarches de base!

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 182
    Points : 1 853
    Points
    1 853
    Par défaut
    pour définir tous les chemins d'un coup dans le makefile, on peut définir des macros dans le makefile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DELPHI="D:\Program Files\Borland\Delphi4"
     
    ...
     
    INCDIR=\
    $(DELPHI)\SLib;$(DELPHI)\Lib;$(DELPHI)\Bin;$(DELPHI)\Imports;\
    $(COMPONENTS_DIR);\
    $(CALCOMP);\
    $(LIB_PLUGIN);\
    $(SPECIAL_DIRS)
    puis il faut passer $(INCDIR) au moment de l'appel du compilateur, du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dcc32.exe -I$(INCDIR) ...
    Bruno
    mon blog - mon site web

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    Le coup de INCDIR je connaissais pas, je vais essayer de l'utiliser de plus en plus, mais je sais comment créer des macros et les réutiliser par la suite

    le pb c'est quand j'essaie de comiler un projet qui utilise des objets ou des .dcus issus d'autres projets ou d'autres emplacements
    j'ai essayé différentes sortes de parades dont l'INCDIR en dernier, mais il n'arrive toujours pas à compiler le projet en me sortant à chaque fois "fichier XXX introuvable" alors que son chemin est bien défini dans l'INCDIR

    qqn avait-il déjà rencontré ce genre de problèmes??

    Merci

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 182
    Points : 1 853
    Points
    1 853
    Par défaut
    dans ce cas il peut s'agir de resources que le compilateur n'arrive pas à trouver, et il faut également passer INCDIR à dcc32.Exe via le flag -R$(INCDIR) (en plus de -I$(INCDIR))

    B.
    mon blog - mon site web

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    là ça commence à être intéressant

    effectivement j'avais pas pensé aux fichiers ressources!
    Mais comment ça marche ce truc?

    en fait j'écris dans mon fichier Make :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INCDIR=\
    $(Path1);$(Path2);$(Path3);$(Path4);$(Path_Res)
     
    Mon_Projet.dll : 
    	$(DCC) -R$(INCDIR) -I$(INCDIR) Mon_Projet.dpr
    et il arrive toujours à me sortir l'erreur "Fchier introuvable"

    ai-je fait un truc de travers??

    à noter aussi que j'arrive à générer les .dcus (en remplaçant les ".dpr" par des ".pas" mais je n'arrive toujours pas à générer une DLL

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 182
    Points : 1 853
    Points
    1 853
    Par défaut
    oops, je viens de regarder mes makefiles, et j'utilise en fait plutôt -U que -I (lequel doit sans doute correspondre aux éventuels fichiers .inc). Désolé pour la mauvaise indication ci-dessus.

    Bruno
    mon blog - mon site web

  10. #10
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    effectivement
    j'ai jeté un coup d'oeil sur les options de compilation de dcc32, et j'ai bien utilisé le -U (le -E aussi pour gérer la sortie de mes fichiers générés)

    j'arrive finalement à générer une DLL (Ouf!)

    Maintenant, ya t-il un moyen conseillé ou pratique pour compiler une liste de projets (sans pour autant de les écrire un par un)

    et surtout, est ce que je peux définir des chemins relatifs comme dans delphi (du genre /../../path1; /../path2;......)

    merci

  11. #11
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    et surtout, comment enchainer la compilation de 2 projets??
    parce que on dirait qu'il ne voit pas tout ce que j'écris après la première ligne de compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    My_Project_1.dll : 
         $(DCC) -R$(INCDIR) -U$(INCDIR) -E$(Bureau) $(Path1)\My_Project_1.dpr
     
    My_Project_2.dll : 
         $(DCC) -R$(INCDIR) -U$(INCDIR) -E$(Bureau) $(Path2)\My_Project_2.dpr
    j'obtiens donc ma première DLL, mais pas la deuxième (sans pour autant avoir un message d'erreur

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    je voi un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    #---------------------------------------------------------
    PROJECTS = Project1.dll Project2.dll
    #---------------------------------------------------------
    default: $(PROJECTS)
    #---------------------------------------------------------
     
    Project1.dll: Project1.dpr
     
    Project2.dll: Project2.dpr
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  13. #13
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    et pour compiler alors??

  14. #14
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    Bon
    j'arrive à compiler les 2 projets maintenant (Merci pour le tuyau.. il suffisait de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(PROJECTS) : 
       $(DCC) -I$(INCDIR) -R$(INCDIR) -U$(INCDIR) -E$(Bureau) $(Path1)\Project1.dpr $(Path2)\Project2.dpr
    Mainteant que j'arrive à générer les .Dlls, je voudrais bien savoir :
    - s'il faut créer tous les .DCUS avant compilation? ou ya til un moyen de les créer à la volée!
    - comment forcer la recompilation d'un projet (car qd la DLL existe, elle n'est pas regénérée à moins de l'effacer!)


    Merci

  15. #15
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 182
    Points : 1 853
    Points
    1 853
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    all: My_Project_1.dll My_Project_2.dll
     
    My_Project_1.dll : 
         $(DCC) -R$(INCDIR) -U$(INCDIR) -E$(Bureau) $(Path1)\My_Project_1.dpr
     
    My_Project_2.dll : 
         $(DCC) -R$(INCDIR) -U$(INCDIR) -E$(Bureau) $(Path2)\My_Project_2.dpr
    puis lancer
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    make My_Project_1.dll My_Project_2.dll
    Bruno
    mon blog - mon site web

  16. #16
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    où est ce que je lance ça??
    dans la console CMD??

  17. #17
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    ton probleme est surtout de verifier que la dll n'est pas chargé en memoire car dans ce cas il te seras impossible de la remplacer

    sinon c'est assez simple avant de faire tes dcc tu fait un delete ?

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  18. #18
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    je fais comme le tutorial proposé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @if exist $(Bureau)\Project1.dll \
    del $(Bureau)\Project1.dll
    dèja ça me génère une erreur!

    j'ai essayé sans le "@if exist" mais le del retourne une erreur quand le fichier n'existe pas!

    y aurait pas un moyen plutot de recompiler (écraser la DLL existante par la nouvelle) sans se poser de questions (parce que c'est le cas si j'utilise delphi)

    et puis à propos des chemins relatifs?? (..\..\path1) ??

    merci

  19. #19
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    la commande del est une command dos ... pouquoi lui mettre un chemin devant ?

    sinon pour la reconstruction de toutes les unité il existe une option "B"
    a l'inverse pour ne faire que les unité modifié "M"

    c'est quoi le probleme avec le chemin relatif ?

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  20. #20
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    Veuillez excuser mes réponses successives, mais j'ai toujours le problème des .dcus!!
    faut-il toutes les créer avant compilation??


    sinon (anapurna), je vais laisse rtomber les chemins relatifs (je voulais juste faire un truc propre mais j'iamgine que je verrais ca après)..
    quant au del, je comprends pas ce que tu veux dire !! j'ai pas mis de chemin avant!! je lui ai juste indiqué où se trouve le fichier à supprimer

Discussions similaires

  1. Création d'un makefile pour cross-compilation
    Par joffrey575 dans le forum Matériel
    Réponses: 0
    Dernier message: 11/02/2015, 16h15
  2. Réponses: 1
    Dernier message: 15/11/2010, 21h13
  3. Création de makefile pour librairie dynamique
    Par Ganondorf dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 12/11/2010, 08h59
  4. Makefile générique pour compilation projet C
    Par AuraHxC dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 13/12/2007, 21h29
  5. 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

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