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. #41
    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
    j'ai attaché un projet qui contient une seule unité
    et je n'arrive toujours pas à le faire compiler sans renseigner les .dcus

    je suis sur que je passe à côté d'un truc primordial car ce n'est pas normal de me demander l'emplacement des .Dcus qui n'existent pas encore

    merci
    Fichiers attachés Fichiers attachés

  2. #42
    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
    j'ai pu reproduire le problème. La hiérarchie des fichiers est la suivante:
    C:\temp\ExtractFolderFiles

    Le makefile est dans C:\Temp, le projet et les unités dans C:\temp\ExtractFolderFiles

    Quand on lance le makefile depuis C:\TEMP, ie make -f build_test.mak, on constate le problème. Par contre si on lance le makefile depuis C:\temp\ExtractFolderFiles, ie make -f ..\build_test.mak, tout va bien.

    il faut donc que make soit lancé dans le dossier du projet. Je ne sais pas si c'est un bug ou une feature. De toute manière quand on a plusieurs projets a compiler, c'est très pratique d'avoir un makefile dans chaque dossier de projet, et un makefile général qui organise la descente dans les différents dossiers de projets.

    Si tu veux appliquer cette méthode:
    - déplace build_test.mak dans ExtractFolderFiles, renomme le en "makefile"
    - crée un nouveau fichier nommé "makefile" dans C:\TEMP, qui contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    all:
    	cd ExtractFolderFiles 
    	make
    (en fait j'utilise le GNU make, ou la syntaxe est plutôt du style cd ExtractFolderFiles && make - mais avec Borland Make, le code ci-dessus a l'air de fonctionner)

    et alors tu peux lancer make depuis C:\TEMP, ce qui était l'intention initiale je pense.

    Bruno
    mon blog - mon site web

  3. #43
    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
    mais à quoi correspond le "all :" ??

    et puis j'ai fait exactement toutes ces étapes

    j'obtiens l'erreur suivante
    "MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
    Compilation de PRODUCTION
    Fatal: '-u"C:\Temp\ExtractFolderFiles"' does not exist - don't know how to make it"

  4. #44
    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 n'ai jamais vu cette syntaxe (all : ....)

    et qu'est ce que on doit faire si on a deux projets dans 2 répertoires différents??

    tu fais :

    all :
    cd Repertoire1
    make
    cd Repertoire2
    make

    ou
    cd repertoire1
    cd repertoire2
    make

    parce que ni l'un ni l'autre ne fonctionnent

  5. #45
    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
    Citation Envoyé par freestyler
    mais à quoi correspond le "all :" ??
    all pour toutes les cibles dans le makefile. Tu peux mettre default: si tu préfères.

    Citation Envoyé par freestyler
    et puis j'ai fait exactement toutes ces étapes

    j'obtiens l'erreur suivante
    "MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
    Compilation de PRODUCTION
    Fatal: '-u"C:\Temp\ExtractFolderFiles"' does not exist - don't know how to make it"
    ??
    dans ton makefile j'ai enlevé ce -u.. sans chercher à comprendre. J'ai attaché un makefile corrigé qui fonctionne pour moi (Delphi 7).

    Citation Envoyé par freestyler
    all :
    cd Repertoire1
    make
    cd Repertoire2
    make]

    il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    all: project1 project2
     
    project1:
       cd Repertoire1
       make
     
    project2:
       cd Repertoire2
       make
    B.
    Fichiers attachés Fichiers attachés
    mon blog - mon site web

  6. #46
    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
    Merci deja de l'invesissement..ca m'a vachement aidé jusque là!

    sinon, quans je tape dans la fenetre msdos
    cd repertoire1
    puis
    make
    ca marche

    par contre, quand j'ecris le bout de code que t'as mis dans le makefile "générique" (makefile.mak), il fait absolument rien, sinon m'envoyer une erreur

    ** error -1 ** deleting Project1.exe

    ya des espaces, des sauts de lignes, .. à respecter?

    parce que actuellement, je me mets dans le répertoire ou il ya mon makefile "générique" et je tape :
    - ou make
    - ou make -fMakefile
    - ou make -fMakefile -p
    dans les trois cas, g la meme erreur

    merci

  7. #47
    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
    ** error -1 ** deleting Project1.exe
    les messages de make sont toujours cryptiques... il faut bien regarder la ligne qui précède l'erreur, qui indique la commande qui a échoué. Dans ce cas je pense qu'il s'agit du CD.

    Avec Borland Make je n'ai pas trouvé de moyen de sortir automatiquement du dossier en cours une fois la compilation terminée, donc voici une façon de le faire "manuellement" avec des CD ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    all: p1 p2
     
    p1:
    	cd ExtractFolderFiles 
    	make
    	cd ..
     
    p2:
    	cd ExtractFolderFiles2 
    	make
    	cd ..

    a propos,
    - ou make
    - ou make -fMakefile
    note que c'est équivalent. Si ton makefile s'appelle "makefile", il n'est pas nécessaire d'utiliser l'option -f.

    Il est vrai que la mise au point de makefiles peut être assez frustrante... Leur principal intérêt est la gratuité de l'outil. Mais il y a maintenant des outils bien plus modernes comme finalbuilder, qui se rentabilisent très rapidemment. De + Finalbuilder "connaît" les projets Delphi.

    B.
    mon blog - mon site web

  8. #48
    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 c le CD

    le pire c'est que j'y suis arrivée une heure avant en changeant les répertoires par leur chemin court (grace à dir /x)..

    maintenant, j'ai la meme erreur et j'arrive plus à la surmonter comme tout à l'heure

    j'ai viré les espaces, les accents, mais il veut toujours pas de mon cd !!!!!

  9. #49
    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
    c bon
    youpiiiiiiiiiiiiiiiiiii

    en fait, msdos a un gros gros problème avec les chemins

    d'ailleurs, je sais maintenant que 80% des m... que j'ai pu avoir lors de la création de ce makefile sont à cause des chemins

    1 - il n'aime pas les espaces (pire : il les accepte parfois!)
    2 - il n'aime pas les guillemets (pire : il les accepte parfois!)
    3 - il n'aime pas les accents (pire : il les accepte parfois!)

    donc pour éviter tout souci, éviter ces 3 points
    utiliser les chemins courts
    par exemple, au lieu de faire --> faire ces chemins "courts" sont facilement connus en se mettant dans le répertoire parent (ici c'est C:\) et taper
    voila

    j'essaierai de compléter ce post en ayant terminé tout le boulot


    Merci beaucoup.. ceci était très intéressant
    et à mon avis ce sera un excellent post, surtout que la documentation sur ce sujet est peu détaillée..
    étant novice au départ, je crois que j'ai beaucoup appris.. j'espère qu'il en sera de même pour toute la communauté

    @+

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