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 :

Nothing to be done for `Makefile'


Sujet :

C

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2013
    Messages : 52
    Par défaut Nothing to be done for `Makefile'
    Bonjour,
    J'ai pour objectif de compiler une librairie à partir de différents .cpp et de .h.
    J'ai créé un Makefile:
    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
     
    CXX=gcc
    CXXFLAGS=-W -Wall -ansi -pedantic
     
     
    Makefile_sources: fichier1.o fichier2.o fichier3.o 
    	$(CCX) -o fichier1.o ficheir2.o fichier3.o
     
     
    fichier1.o:fichier1.cpp
    	$(CXX) -o fichier1.o -c fichier1.cpp 
     
     
    fichier2.o:fichier2.cpp
    	$(CXX) -o fichier2.o -c fichier2.cpp
     
     
    fichier3.o:fichier3.cpp
    	$(CXX) -o fichier3.o -c fichier3.cpp 
     
     
    clean:
    	rm -rf *.o
    Tout d'abord, est-ce que mon Makefile est correct?
    Ensuite, quand je fais j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    make: Nothing to be done for `Makefile'.
    .
    Je ne comprends pas cette erreur.

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut
    Bonjour !

    Sans toutefois être sûr que cela corrigera le problème je pense que tu as un flag incorrect à la ligne 7 : CCX au lieu de CXX si je ne m'abuse.

    Bon courage.

    Muska17

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2013
    Messages : 52
    Par défaut
    Ah oui!
    Merci, je vais corriger ça.

  4. #4
    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
    Bonjour,

    Tu devrais lire la doc de make.

    L'usage est "make [-f makefile] [cible] [cible...]"

    Ta commande "make MakeFile" demande à make d'utiliser ce qu'il parvient à trouver comme makefile (ici MakeFile), et à executer la cible MakeFile, qu'il ne trouve pas.
    Il considère donc qu'il n'y a rien à faire pour générer le fichier MakeFile.

    Essaye simplement "make", qui executera la première cible du makefile qu'il choisira

    Sinon, tu as aussi "make -f MakeFile" et "make -f MakeFile cible", pour spécifier explicitement le fichier de règles à make.

  5. #5
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    rhoo ... on a abandonné les autotools

    Sinon ton makefile a en lui-même quelques problèmes.
    Bon le premier n'est pas trop trop grave. Tu définis une variable CXXFLAGS mais tu ne l'utilises jamais, ce serait mieux avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fichier1.o:fichier1.cpp
    	$(CXX) $(CXXFLAGS) -o fichier1.o -c fichier1.cpp
    Ensuite de petites étourderies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Makefile_sources: fichier1.o fichier2.o fichier3.o 
    	$(CCX) -o fichier1.o ficheir2.o fichier3.o
    Une faute de frappe ficheir2.o au lieu de fichier2.o. La variable CCX n'existe pas ... elle sera évaluée à vide et au final la commande exécutée sera -o fichier1.o ficheir2.o fichier3.oUne erreur toujours sur cette ligne, si tu donnes la bonne variable la commande sera gcc -o fichier1.o fichier2.o fichier3.o -> tu oublié de donner un nom au fichier de sortie ...

    Enfin l'option -W de gcc est dépréciée, il faut utiliser -Wextra à la place.

    Je dirais que tu as aussi de petits problèmes de compréhension de construction du Makefile. Le nom Makefile_sources me fait penser que tu as plus voulu créer une variable qui contient la liste des sources ou des objets ?
    Je suppose que tu as aussi oublié de spécifier certaines dépendances : si un header apparaît dans un source alors il doit aussi apparaître dans les dépendances.

  6. #6
    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
    Visiblement tu es à la recherche de l'outil qu'il te faut.

    Tu peux te tourner vers des solutions autres.
    J'ai utilisé waf et scons, ce dernier me plait assez bien.

    Par exemple, voici le script SConstruct que j'utilise actuellement avec scons pour quasiment n'importe quel projet c++.
    Code SConstruct : 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
    import os.path
    import re
    import sys
     
    VariantDir('.build', '.', duplicate = 0)
     
    env = Environment(CPPPATH = 'includes')
     
    env.AppendUnique(CPPFLAGS=['-Wall', '-Wextra', '-Werror', '-O2', '-g', '-DLINUX'])
    env.AppendUnique(LINKFLAGS=['-O2', '-g'])
     
    commons = Glob('.build/[!\.]*/*.cpp')+Glob('.build/[!\.]*/[!\.]*/*.cpp')
    mains = Glob('.build/*.cpp')
     
    for app in mains:
    	resname = os.path.basename(str(app))
    	resname = re.sub(".cpp","",resname)
    	env.Program(target = resname, source = commons + [app])

    Suppose l'arborescence suivante:
    • /appli1.cpp
    • /appli2.cpp
    • /include/machin/*.h
    • /include/truc/*.h
    • /machin/*.cpp
    • /truc/*.cpp
    • /truc/*.cpp

    Alors ce script pour scons produira appli1 et appli2 en utilisant le cpp à la racine correspondant, et les cpp présents dans tous les sous-dossiers (et sous-sous-dossiers)

Discussions similaires

  1. Compilation "make: nothing to be done for 'all'"
    Par stoner dans le forum Systèmes de compilation
    Réponses: 2
    Dernier message: 22/10/2013, 19h23
  2. [Batch] Makefile, batch & boucle FOR
    Par alband85 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 09/06/2009, 10h10
  3. "Nothing to be done"
    Par lordskelethom dans le forum Code::Blocks
    Réponses: 6
    Dernier message: 18/10/2008, 15h46
  4. Nothing to be done
    Par acacia dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 19/02/2008, 18h20
  5. [make] Nothing to be done for ...
    Par Zenol dans le forum Systèmes de compilation
    Réponses: 5
    Dernier message: 02/02/2006, 18h50

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