489 Stimmen

gcc makefile Fehler: "No rule to make target ..."

Ich versuche, GCC (Linux) mit einem Makefile zu verwenden, um mein Projekt zu kompilieren.

Ich erhalte die folgende Fehlermeldung, die ich in diesem Zusammenhang nicht entziffern kann:

"No rule to make target 'vertex.cpp', needed by 'vertex.o'.  Stop."

Dies ist das Makefile:

a.out: vertex.o edge.o elist.o main.o vlist.o enode.o vnode.o
    g++ vertex.o edge.o elist.o main.o vlist.o enode.o vnode.o

main.o: main.cpp main.h
    g++ -c main.cpp

vertex.o: vertex.cpp vertex.h
    g++ -c vertex.cpp

edge.o: edge.cpp edge.h
    g++ -c num.cpp

vlist.o: vlist.cpp vlist.h
    g++ -c vlist.cpp

elist.o: elist.cpp elist.h
    g++ -c elist.cpp

vnode.o: vnode.cpp vnode.h
    g++ -c vnode.cpp

enode.o: enode.cpp enode.h
    g++ -c node.cpp

2voto

Andres Salas Punkte 153

Diese Botschaft kann ganz klar viele Dinge bedeuten.

In meinem Fall war es die Kompilierung unter Verwendung mehrerer Threads. Ein Thread benötigte eine Abhängigkeit, die ein anderer Thread noch nicht fertiggestellt hatte, was einen Fehler verursachte.

Nicht alle Builds sind thread-sicher. Ziehen Sie also einen langsamen Build mit einem Thread in Betracht, wenn Ihr Build andere Tests wie die oben genannten besteht.

2voto

corning Punkte 303

Es gibt mehrere Gründe für diesen Fehler.

Einer der Gründe, warum ich auf diesen Fehler gestoßen bin, ist beim Erstellen für Linux und Windows.

Ich habe einen Dateinamen mit Großbuchstaben BaseClass.h SubClass.h Unter Unix wird die Groß- und Kleinschreibung bei der Dateinamengebung beachtet, unter Windows wird die Groß- und Kleinschreibung nicht beachtet.

C++, warum wird der Name von Header-Dateien nicht in Großbuchstaben geschrieben?

Versuchen Sie, einen sauberen Build mit gmake clean zu kompilieren, wenn Sie gmake verwenden

Einige Texteditoren sind so voreingestellt, dass sie Groß- und Kleinschreibung bei Dateinamen ignorieren. Dies kann ebenfalls zu demselben Fehler führen.

Wie kann ich eine C++-Datei in Qt Creator hinzufügen, deren Name mit Großbuchstaben beginnt? Er macht ihn automatisch zu einem Kleinbuchstaben

1voto

Ryan Deschamps Punkte 341

Dieser Fehler trat bei mir in Travis auf, als ich vergaß, neue Dateien zu meinem Git-Repository hinzuzufügen. Ein dummer Fehler, aber ich kann mir vorstellen, dass er recht häufig auftritt.

0voto

sskoog Punkte 43

In meinem Fall wurden die Quell- und/oder alte(n) Objektdatei(en) von einer halb abgestürzten IDE oder von einem Backup-Cloud-Dienst, der nicht mehr richtig funktioniert, gesperrt (schreibgeschützt). Ein Neustart aller Programme und Dienste, die mit der Ordnerstruktur verbunden waren, löste das Problem.

0voto

Raj Punkte 1118

In meinem Fall trat das Problem auf, nachdem ich einige der Header- und C-Dateien entfernt hatte, und das Projekt ließ sich nicht kompilieren.

Laufen sauber und dann bauen das Projekt zusammengestellt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X