web-dev-qa-db-fra.com

make: *** Pas de règle pour faire de la cible «tous». Arrêtez. Erreur Eclipse

Je viens de télécharger le kit de développement Eclipse CDT (87 Mo) pour Windows. J'ai également installé MinGW et msys. J'ai également ajouté ceci à PATH: C:\msys\1.0\bin; C:\mingw\bin. et redémarré l'ordinateur après cela. J'ai vérifié par type "make --version" en cmd et cela fonctionne.

Cependant, pour une raison quelconque, je ne peux pas compiler mon projet C. Je ne reçois pas de fichiers binaires et n'ai que les choses suivantes dans COnsole:

**** Build of configuration Default for project XXX ****

make all 
make: *** No rule to make target `all'.  Stop.

Quelqu'un pourrait-il m'aider avec cela s'il vous plaît?

18
chepukha

Pour référence future, si vous essayez d'importer un projet existant avec un makefile ...

Ce message apparaîtra toujours si votre makefile n'a pas de règle "all". L'utilisation de l'option "Générer automatiquement des Makefiles" devrait s'en occuper automatiquement. Si vous ne voulez pas que des makefiles soient faits pour vous, vous avez au moins 3 options simples ...

Option 1

Si vous ne voulez pas utiliser une règle de ce nom, utilisez la solution de twokats. Voici une clarification.

  1. Allez dans Propriétés du projet -> Construction C/C++ -> Onglet Comportement.
  2. Laissez la construction (construction incrémentielle) cochée.
  3. Supprimez "tous" de la zone de texte à côté de Build (Incremental Build).

Cela permet à Eclipse de savoir que vous n'essayez pas d'utiliser une cible make appelée "all". Pour une raison quelconque, c'est la valeur par défaut.

Option 2

Utilisez quelque chose de similaire au makefile d'Etiennebr. Notez que la ligne all: $(TARGET) est la règle qu'Eclipse se plaint de ne pas trouver.

Option

Remplacez "tous" par un nom de règle de votre choix et assurez-vous d'inclure cette règle dans votre makefile.

10
drmuelr

Juste pour votre référence, il existe un moyen de configurer les options de construction CDT. J'ai eu ce même message d'erreur (bien que je fait avoir une cible de création - tout simplement pas nommée "tous") et a trouvé cette solution (pour Galileo + CDT):

Faites un clic droit sur votre projet et choisissez Propriétés. La boîte de dialogue Propriétés apparaît et vous devriez voir un Construction C/C++ option où vous pouvez définir des options de construction spécifiques. Sélectionnez cet élément et la page Propriétés apparaîtra. Choisissez la configuration que vous souhaitez modifier, puis dans la section ci-dessous que vous devriez voir 2 onglets: Paramètres du générateur et Comportement. C'est le Comportement onglet que vous voulez. Dans cette section, vous pouvez définir des préférences pour les paramètres de génération et les paramètres du plan de travail, y compris la spécification d'un nom cible (la valeur par défaut est "tous") ou la désactivation des générations automatiques.

Cela m'a été extrêmement utile lorsque j'ai commencé à utiliser le CDT. Mon code source est séparé de la zone de construction, et jusqu'à ce que je configure, aucun makefile n'existe. Lorsque j'ai configuré, mon nom cible par défaut est explicitement "par défaut", pas "tous". C'était ennuyeux de voir Eclipse signaler une erreur dans mon projet avant de faire quoi que ce soit. La configuration de l'environnement pour correspondre à mon développement a fait des merveilles. HTH.

6
twokats

cliquez avec le bouton droit sur le projet Propriétés-> C/C++ Build, dans les "Paramètres du générateur", cochez l'option "Générer automatiquement les Makefiles", puis sélectionnez l'option "Type de générateur" sur "Générateur interne", puis cliquez sur OK, le problème était résolu!

5
user2913643

Vous devriez jeter un œil à votre makefile (ou en créer un s'il manque). C'est le makefile par défaut:

CXXFLAGS =  -O2 -g -Wall -fmessage-length=0
OBJS =      main.cpp
LIBS =
TARGET =      main.exe

$(TARGET):  $(OBJS)
    $(CXX) -o $(TARGET) $(OBJS) $(LIBS)
all:    $(TARGET)
clean:
    rm -f $(OBJS) $(TARGET)
2
Etienne Racine

J'ai passé beaucoup de temps sur cette erreur et j'ai maintenant réalisé que les projets qui ne sont pas compilés ont été créés avant d'installer MinGW et msys donc il n'y avait pas de makefile auparavant. Et il n'y avait pas de dossier d'inclusion avec un lien vers le makefile. C'est la raison pour laquelle je n'ai pas pu le compiler. Maintenant que je crée un nouveau projet, ça va.

Cependant, je me demande s'il existe un moyen d'ajouter le chemin vers makefile pour les projets précédents?

Merci

2
chepukha