Sehr einfache Anwendung mit dem Fehler "multiple target patterns" von Eclipse
Da ich mich wohler mit Eclipse, ich dachte, ich würde versuchen meine Umwandlung Projekt von Visual Studio. Gestern habe ich versucht, einen sehr einfachen kleinen test. Egal was ich versuche, make
schlägt mit "multiple target patterns". (Dies ist ähnlich wie diese unbeantwortete Frage.)
Habe ich drei Dateien:
Application.cpp:
using namespace std;
#include "Window.h"
int main() {
Window *win = new Window();
delete &win;
return 0;
}
Fenster.h:
#ifndef WINDOW_H_
#define WINDOW_H_
class Window {
public:
Window();
~Window();
};
#endif
Window.cpp:
#include <cv.h>
#include <highgui.h>
#include "Window.h"
const char* WINDOW_NAME = "MyApp";
Window::Window() {
cvNamedWindow(WINDOW_NAME, CV_WINDOW_AUTOSIZE);
cvResizeWindow(WINDOW_NAME, 200, 200);
cvMoveWindow(WINDOW_NAME, 0, 0);
int key = 0;
while (true) {
key = cvWaitKey(0);
if (key==27 || cvGetWindowHandle(WINDOW_NAME)==0) {
break;
}
}
}
Window::~Window() {
cvDestroyWindow(WINDOW_NAME);
}
Habe ich die folgenden Pfade zu den compiler-include-Pfad (-I
):
"$(OPENCV)/cv/include"
"$(OPENCV)/cxcore/include"
"$(OPENCV)/otherlibs/highgui"
Habe ich die folgenden Bibliotheken dem linker (-l
):
cv
cxcore
highgui
Und die folgenden library-Suchpfad (-L
):
"$(OPENCV)/lib/"
Eclipse, der compiler und der linker alle erfolgreich, darunter die Header und Bibliotheken. Ich bin mit dem GNU C/C++ - compiler & linker von Cygwin.
Beim kompilieren bekomme ich folgende make
Fehler:
src/Window.d:1: *** multiple target patterns. Stop.
Fenster.d enthält:
src/Window.d src/Window.o: ../src/Window.cpp \
C:/Program\ Files/OpenCV/cv/include/cv.h \
C:/Program\ Files/OpenCV/cxcore/include/cxcore.h \
C:/Program\ Files/OpenCV/cxcore/include/cxtypes.h \
C:/Program\ Files/OpenCV/cxcore/include/cxerror.h \
C:/Program\ Files/OpenCV/cxcore/include/cvver.h \
C:/Program\ Files/OpenCV/cxcore/include/cxcore.hpp \
C:/Program\ Files/OpenCV/cv/include/cvtypes.h \
C:/Program\ Files/OpenCV/cv/include/cv.hpp \
C:/Program\ Files/OpenCV/cv/include/cvcompat.h \
C:/Program\ Files/OpenCV/otherlibs/highgui/highgui.h \
C:/Program\ Files/OpenCV/cxcore/include/cxcore.h ../src/Constants.h \
../src/Window.h
C:/Program\ Files/OpenCV/cv/include/cv.h:
C:/Program\ Files/OpenCV/cxcore/include/cxcore.h:
C:/Program\ Files/OpenCV/cxcore/include/cxtypes.h:
C:/Program\ Files/OpenCV/cxcore/include/cxerror.h:
C:/Program\ Files/OpenCV/cxcore/include/cvver.h:
C:/Program\ Files/OpenCV/cxcore/include/cxcore.hpp:
C:/Program\ Files/OpenCV/cv/include/cvtypes.h:
C:/Program\ Files/OpenCV/cv/include/cv.hpp:
C:/Program\ Files/OpenCV/cv/include/cvcompat.h:
C:/Program\ Files/OpenCV/otherlibs/highgui/highgui.h:
C:/Program\ Files/OpenCV/cxcore/include/cxcore.h:
../src/Window.h:
Ich habe versucht, das entfernen Sie alle OpenCV Header aus dem Fenster.d (von Zeile 2 ab), aber der Fehler bleibt. Außerdem habe ich aktualisiert, Eclipse und OpenCV, alles ohne Erfolg.
Haben Sie irgendwelche Ideen, die einen Versuch Wert? Ich bin bereit, alles zu versuchen!
make
, das ist wohl wichtiger, als die eigentliche C++ - Quellcode.InformationsquelleAutor Paul Lammertsma | 2010-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Arbeiten Sie aus einer Cygwin-installation?
Ich habe gesehen, dieses problem vor der Verwendung von Cygwin--im Grunde
make
sieht die:
in den Weg und denkt, es ist ein weiteres Ziel-definition, daher der Fehler.Wenn Sie arbeiten aus einer Cygwin-installation, könnten Sie versuchen, anstelle der
c:/
mit/cygdrive/c/
. Wenn nicht, könnten Sie versuchen, mithilfe von relativen Pfaden oder mit einem Netzwerk-mount und sehen, wenn dieses es regelt.C:` with
C\:/, but then the compiler simply can't find the headers anymore. The same holds for replacing it with
/cygdrive/c/. I'm fairly certain this will resolve the
machen` problem, aber wie bekomme ich Sie zusammen arbeiten?Ich weiß nicht, wie zu verhindern, dass der Bewertungsabschlag von Escapezeichen versehen. Ich hatte allerdings ersetzt "C:\" mit "C\:/".
Nur als test habe ich kopiert alle includes und libraries in mein Projekt Weg. Sicher genug, baut und betreibt. Das problem scheint zu sein, die Angabe eines absoluten Pfades.
Als ich hatte dieses problem vor, wir beschlossen, es durch einfaches austauschen alle
c:/
mit/cygdrive/c
(einschließlich der in der Umgebungsvariablen gezogen), und dass unser problem geloest. Ich glaube nicht, dass Sie verwenden können, diec:/
format Pfad mit GNU-make (obwohl es kann einige Windows-spezifische build-it; ich arbeite nicht mit Cygwin genug, um zu wissen). Das Netzwerk mounten könnte noch funktionieren-Kartec:
alsc
, dann können Sie auf diese von\\mycomputer\c
. Other than, die ich bin, die Ideen aus :(.Versuchen Sie es mit Eclipse aus der Cygwin-shell.
InformationsquelleAutor James McNellis
laut anderen internet-Quellen ist dies bezogen auf ein problem, dass cygwin machen, hat mit windows-Pfadangaben, speziell die c:.
Für mich, es arbeitet einwandfrei mit der Einstellung relative Pfade statt.
z.B. wenn Sie etwas, das wie
fügen Sie einfach
../mymodule/headers/
als include-Pfad in der Projekt-Konfiguration der compiler diese finden die header -
afile.h
und generieren stellen Sie Dateien mit dem relativen Pfad.(compiler-Befehl die Anweisung
-I../mymodule/headers/
)sieht aus wie execution-directory ist immer der Projekt-Basis-Verzeichnis.
InformationsquelleAutor marco
Auf Cygwin, GNU make version 3.81-1 geliefert, von der Standard-setup-Programm funktioniert nicht mit der automatischen Headerdatei-Abhängigkeiten, die durch den Compiler. Die Fehlermeldung, die Sie sehen, da dieser Fehler wird wie folgt Aussehen:
Hier sind zwei vorgeschlagenen fixes:
- Versuchen Sie erhalten die Vorherige version (3.80)
- Um einen festen 3.81-version, zum Beispiel von http://www.cmake.org/files/cygwin/make.exe
src: https://projects.coin-or.org/BuildTools/wiki/current-issues
Ersetzen Sie einfach die Datei in Ihrem "C:\cygwin\bin\" - Ordner (oder wohin cygwin installiert ist) mit der "festen" stellen oben erwähnte Datei.
InformationsquelleAutor barcaleiku
Sieht aus wie es ist ein einfacher Weg, um dieses Problem zu lösen.
Ändern Sie einfach die "Strom-generator" von "GNU Make Builder" zu "CDT Internal Builder" Projekt-Eigenschaften->C/C++ - generator->Tool Chain Editor->Strom-generator zu tun.
Mir, dieses problem wird verursacht, durch den automatisch generierten "XXX.d" Abhängigkeit-Dateien im Debug-Verzeichnis (oder Version :), die generiert wurden, die die gcc -MF und als Nebeneffekt gcc-c. Aber GNU make, offensichtlich vergessen haben, fügen Sie Anführungszeichen um Dateinamen, wenn -MF.
"CDT Internal Builder" nicht verwenden makefile noch GNU make an alle. Eclipse Verwaltung der build-Prozess selbst.
Wenn Sie darauf bestehen, zu verwenden, GNU-make, das funktioniert nicht,
InformationsquelleAutor Crow Soup
Hatte ich auch das problem der mehrfache target-Muster gemeldeten stellen bei der Verwendung von eclipse unter windows/cygwin. Ich löste das problem wie oben vorgeschlagen, indem nur relative Pfade. Ich wusste gar nicht, dass hatte ich absolute Pfade, aber wenn ich ein include-Verzeichnis im Projekt-Verzeichnis von eclipse erweitert Sie in den vollen Pfad.
Zum Beispiel, wenn Sie hinzufügen, einen Pfad, der relativ zum workspace, eclipse erzeugt ""${workspace_loc:/include}"" zu erweitern, um etwas beginnend mit "c:\". Dies ist der Grund, warum es geschah in meinem Fall.
Habe ich einfach ersetzt die komplexe Zeichenfolge, die oben mit "../../include" und es ist mein problem gelöst.
InformationsquelleAutor Dan
Können Sie auch löschen *.d Dateien im output-Ordner und erstellen Sie dann
InformationsquelleAutor Abhishek K
Arbeite ich in der Cygwin-Umgebung unter Windows 7 (64bit) mit Eclipse Kepler CDT für C++.
In Eclipse, springen
In die Include paths (-I) fügen Sie 2 Wege: "C:\cygwin64\usr\include\libxml2"
und "/cygdrive/c\cygwin64\usr\include\libxml2"
InformationsquelleAutor user1541269
Eine änderung, die für mich gearbeitet (ich verwende Cygwin und SSH-terminal in einem SVN-server parallel) wurde zum löschen der
.d
- Dateien. Als ich diemake -f makefile
von Cygwin, es brach etwas. Ich in der Regel kompilieren von der Putty-terminal, und nach dem löschen der.d
Dateien von meinem Projekt hörte es auf zu Klagen über die mehrere Ziele.InformationsquelleAutor Brick
Den Fehler "multiple target patterns. Stop." auftreten, da src/Window.d haben die Pfade generiert-compiler in windows-Plattform:
C:/Program\ Files/OpenCV/cv/include/cv.h \
C:/Program\ Files/OpenCV/cxcore/include/cxcore.h \
C:/Program\ Files/OpenCV/cxcore/include/cxtypes.h \
C:/Program\ Files/OpenCV/cxcore/include/cxerror.h \
Wenn Sie importieren Sie das Projekt in Eclipse in Linux-Plattform, würde ich empfehlen, Sie geben eine saubere bauen, damit das nächste build ist, generiert den Pfad im Linux-format:
/home/user/OpenCV/cv/include/cv.h \
/home/user/OpenCV/cxcore/include/cxcore.h \
/home/user/OpenCV/cxcore/include/cxtypes.h \
/home/user/OpenCV/cxcore/include/cxerror.h \
Das gleiche gilt, wenn Sie mit cygwin. Das Pfad-format in cygwin linux ist wie format
/cygdrive/c/
stattC:/
InformationsquelleAutor FLEMIN JOSE