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

C Discussion :

Makefile - Aucune règle pour fabriquer la cible


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 9
    Par défaut Makefile - Aucune règle pour fabriquer la cible
    Bonjour,

    Je débute avec cygwin sur window et je comprend pas pourquoi j'ai une erreur.

    J'ai un fichier Makefile.t (que j'avoue ne pas avoir créé mais que je comprend un peu ) dont voici le contenu:

    .SUFFIXES: .o .f90
    F90=gfortran
    LINK=gfortran -O
    FLAGS=-c -O
    
    OBJS=advdiffadapsteady.o meshadapinterp.o dtsta.o adrs.o
    
    advdiffadapsteady.exe:$(OBJS)
    	$(LINK) $(OBJS) -o advdiffadapsteady.exe
    
    .f90.o:
    	$(F90) $(FLAGS) $*.f90
    Et quand je tape dans cygwin: make Makefile, j'obtiens:

    [PRE]make: *** Aucune règle pour fabriquer la cible «*Makefile*». Arrêt.[/ORE]

    Je bloque depuis 3 jours, j'ai regardé partout, j'ai essayé de comprendre les tutoriels de Makefile mais ils ne ressemblent pas au mien, d'où mon premier post sur ce forum donc merci d'avance pour votre aide.

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Tu aurais du commencer par man make ou make --help.
    Tu aurais vu que make définit une option spécifique (-F si je me souviens bien) pour spécifier le fichier.

    Quand on ne donne aucune option, (make), le programme trouve un fichier nommé makefile (ou l'une des quelques variations prévues)

    Par contre, on peut demander à make de réaliser certaines cibles en particulier, en les nommant.

    Comme tu n'as pas écrit make -F Makefile.t, make essaye de chercher la cible Makefile qui n'est pas définie (ce qu'il te dit, d'ailleurs)

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 9
    Par défaut
    Ah ça y est ça à l'air de fonctionner pour Makefile merci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ make -f Makefile_steady.t
    gfortran -c -O advdiffadapsteady.f90
    gfortran -c -O meshadapinterp.f90
    gfortran -c -O dtsta.f90
    gfortran -c -O adrs.f90
    gfortran -O advdiffadapsteady.o meshadapinterp.o dtsta.o adrs.o -o advdiffadapsteady.exe
    Maintenant j'ai ouvert le fichier advdiffadapsteady.exe (en double cliquant dessus, je sais pas si y a quelque chose avec cygwin) et j'ai deux messages d'erreur me disant que les fichiers cyggfortran-3.dll et cygwin1.dll sont introuvables.
    Tu sais comment je peux les avoir ?

  4. #4
    Membre confirmé

    Homme Profil pro
    automatisme
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : automatisme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Par défaut
    Bonjour,
    pour trouver une DLL, ton 'programme va regardé' dans le dossier courant de ton '.exe' ou dans le dossier "C:\Windows\System32" (définie dans la variable d'environnement '$PATH$', il me semble). Si elles ne sont pas dans ces dossiers, le programme ne pourra pas s’exécuter (dès qu'il va vouloir charger les DLL). Il te suffit de les copié dans l'un des deux. Si tu cherches où te les procurer, sur leur site.

    Cordialement Victor

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    As-tu lu les instructions de compilation complètes?
    Ce type de choses sont indiquées, en général

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 9
    Par défaut
    Quand j'affiche $PATH$:

    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ $PATH$
    -bash: /usr/local/bin:/usr/bin:/cygdrive/c/ProgramData/Oracle/Java/javapath:/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files (x86)/FreeFem++:/cygdrive/c/Users/harni/AppData/Local/Microsoft/WindowsApps:/usr/lib/lapack$: No such file or directory

    Sinon j'ai cherché dans le dossier C:\cygwin64\bin si il y avait les deux fichiers dll et ils y sont.

    Ah et je viens de comprendre pourquoi le téléchargement de cygwin a prit une journée, j'ai un dossier de 17Go (oui oui 17,3Go) dans mon dossier téléchargements, nommé "http%3a%2f%2fwww.gutscheinrausch.de%2fmirror%2fcygwin%2f", c'est peut etre pour ça que ça marche pas, je suppose qu'il devrait être mit ailleurs nan ?

    Citation Envoyé par ternel Voir le message
    As-tu lu les instructions de compilation complètes?
    Ce type de choses sont indiquées, en général
    Ah euh, je pense pas

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Bonjour,

    Citation Envoyé par Andre1213 Voir le message
    Quand j'affiche $PATH$:
    Ce n'est pas de cette façon qu'on affiche une variable. En premier lieu, en shell, on invoque une variable en la préfixant avec un $, pas en l'encadrant (donc, pas de dollar à la fin). Ensuite, invoquer un nom de variable avec $ a pour effet de substituer l'expression par la valeur de la variable, c'est-à-dire que l'expression « $variable » sera littéralement remplacée, lettre pour lettre, par le contenu de la variable, et ce AVANT d'être évaluée et/ou exécutée. Ça veut dire que lorsque ce que tu tapes ce que tu as écrit, l'interpréteur shell pense que le contenu de la variable est le nom de la commande qu'il faut appeler. C'est pour cela que tu reçois un « no such file ou directory » à la fin du message.

    Cela veut aussi dire que pour affecter une valeur à une variable, il faut également écrire « variable=valeur », sans dollar. Sinon, le nom de la variable sera remplacé avant que l'opération soit faite et l'expression entière ne voudra rien dire.

    Pour afficher le contenu d'une variable en shell, il suffit d'écrire :


    Ah euh, je pense pas
    D'une manière générale, le nom par défaut du makefile est « Makefile » tout simplement, et la manière normale de l'exécuter est d'appeler la commande « make » seule, sans argument. Si tu vois des fichiers approchés tels que « makefile.am » et « makefile.in », c'est qu'il s'agit en général de fichiers intermédiaires qui servent de modèles à des générateurs comme autoconf et qui, eux, vont générer des directives de compilation en fonction de ton environnement et/ou de ta plateforme-cible.

    En général, il y a un fichier INSTALL ou README à la racine du répertoire du projet et qui te dit quelles commandes il faut saisir sur un système donné pour compiler le tout sans difficulté.

  8. #8
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par défaut
    Citation Envoyé par ternel Voir le message
    Tu aurais vu que make définit une option spécifique (-F si je me souviens bien) pour spécifier le fichier.
    Presque : c'est -f, en minuscule. Les options de make sont sensibles à la casse.
    On a le choix entre -f adresseFichier, --file=adresseFichier et --makefile=adresseFichier.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 9
    Par défaut
    J'ai mis le chemin C:/cygwin64/bin dans la variable PATH et maintenant ça marche
    Merci pour votre patience !

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

Discussions similaires

  1. Pas de règle pour fabriquer la cible (Makefile)
    Par arsene87 dans le forum Débuter
    Réponses: 8
    Dernier message: 11/06/2014, 09h39
  2. Makefile : pas de règle pour fabriquer la cible « moc »
    Par allchimiste dans le forum Débuter
    Réponses: 1
    Dernier message: 18/06/2013, 14h33
  3. Aucune règle pour fabriquer la cible
    Par rainbowcrypt dans le forum Modules
    Réponses: 1
    Dernier message: 05/06/2011, 16h41
  4. Réponses: 3
    Dernier message: 15/02/2009, 10h27
  5. [postfix] make tidy: Pas de règle pour fabriquer la cible « tidy »
    Par rvfranck dans le forum Administration système
    Réponses: 5
    Dernier message: 23/06/2007, 16h49

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