7
votes

faire: *** Aucune règle pour rendre la cible `main.o '

Voici la sortie de la console dans Eclipse:

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

O_SRCS := 
C_SRCS := 
S_UPPER_SRCS := 
S_SRCS := 
OBJ_SRCS := 
ASM_SRCS := 
OBJS := 
C_DEPS := 
ASM_DEPS := 
ELFS := 
LSS := 
AVRDUDEDUMMY := 
S_DEPS := 
SIZEDUMMY := 
S_UPPER_DEPS := 

# Every subdirectory with source files must be described here
SUBDIRS := \
src \


7 commentaires

Pourriez-vous isoler le problème en réduisant votre maquillage au minimum possible pour provoquer le problème? Pour le moment, nous ne pouvons pas voir le contenu de tous ceux qui comprend, etc.


Vérifiez si $ (Objs) ou $ (user_objs) a une règle pour compiler MAIN.CC à Main.O. Il suffit de chercher "Main" dans tous les fichiers de fabrication inclus et de tracer la compilation "arborescence" afin qu'elle puisse construire le fichier principal.o. Peut-être que vous devez ajouter sucer une règle!


@Oli je suis désolé. Je viens de poster le makefile que Eclipse génère automatiquement. Pouvez-vous être plus précis sur ce que vous voulez? Je suis confus.


@Nathan: Ce que je veux dire, c'est que ce que Makefile est trop complexe pour que quiconque soit capable de déboguer sans accès à tous les fichiers inclus utilisés, ni accès à votre environnement. Votre meilleur pari est de modifier manuellement le maquillage pour isoler la cause du problème.


@Oli pour être honnête, c'est pourquoi je pose cette question ici. Je ne suis pas assez à l'aise avec des maquillages pour écrire la mienne pour ce type de projet et je voulais voir si la communauté pourrait m'aider à résoudre mon problème. Dites-moi ce que vous avez "fichiers inclus" dont vous avez besoin et je serai heureux de les poster.


Je vois que vous avez posté le contenu des fichiers inclus maintenant. Je suis un peu confus, comme $ (objs) contient ./ src / main.o , mais le message d'erreur que vous avez posté uniquement des discussions sur principale. o (sans le reste du chemin).


@Oli bonne prise. Je l'ai initialement mis dans le répertoire du projet racine par accident puis l'a déplacé. Je viens de supprimer le fichier subdir.mk dans le répertoire racine et reconstruit. Ça fonctionne maintenant. Merci!


4 Réponses :


0
votes

J'ai ajouté le dossier SRC de mon projet à ma liste de répertoires dans Propriétés> Compilateur AVR> Annuaires dossier et essayez de compiler à nouveau.

dans le fichier subdir.mk, la ligne: xxx

devrait être devenu: xxx

Ce dossier src est déjà ajouté dans Source.mk File : xxx


0 commentaires

1
votes

Ne mettez pas le fichier principal.c dans un répertoire, mettez-le en haut de son projet


0 commentaires

16
votes

Cela m'est arrivé aussi, en déplaçant simplement Main.cpp dans un autre dossier.

J'essaie de nettoyer le projet, mais le problème persiste, j'ai donc supprimé le dossier de débogage, re-compiler et fonctionne!


1 commentaires

Devrait être accepté de réponse car c'est le problème, le répertoire de débogage met en cache un maquefile qui doit être reconstruit après une déménagement de fichier source.



0
votes

citant Eclipse - http://help.eclipse.org/juno/index.jsp?topic=%2forg.eclipse.cdt.doc.user%2fconcepts%2fcdt_c_makefile.htm

Q2. Mon point de vue de la console dit aucune règle pour rendre la cible 'x'.

faire -k propre tout faire: * Aucune règle pour rendre la cible 'propre'. faire: * aucune règle pour rendre la cible 'tout'. Par défaut, le programme de fabrication recherche un fichier le plus communément appelé "Makefile" ou "Makefile". S'il ne peut pas trouver un tel fichier dans le répertoire de travail ou si ce fichier est vide ou si le fichier ne contient pas de règles pour les objectifs de ligne de commande ("nettoyer" et "tout" dans ce cas), il échouera normalement avec une erreur message similaire à ceux indiqués.

Si vous avez déjà un maquette valide, vous devrez peut-être modifier le répertoire de travail de votre construction. Le répertoire de travail par défaut de la commande Build est le répertoire racine du projet. Vous pouvez modifier cela en spécifiant un répertoire de construction alternatif dans les propriétés du projet. Ou, si votre fabricant est nommé quelque chose d'autre (p. Ex. Buildfile.mk), vous pouvez spécifier le nom en définissant la commande de construction par défaut pour faire -f buildfile.mk.

Si vous n'avez pas de maquillage valide, créez un nouveau fichier nommé Makefile dans le répertoire racine. Vous pouvez ensuite ajouter le contenu du fabricant d'échantillons (ci-dessus) et la modifier selon que nécessaire.


0 commentaires