Pau*_*sma 10 c++ eclipse gcc cygwin makefile
由于我更习惯使用Eclipse,我想我会尝试从Visual Studio转换我的项目.昨天我尝试了一个非常简单的小测试.无论我尝试什么,都make失败了"多目标模式".(这类似于这个悬而未决的问题.)
我有三个文件:
Application.cpp:
using namespace std;
#include "Window.h"
int main() {
Window *win = new Window();
delete &win;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在window.h:
#ifndef WINDOW_H_
#define WINDOW_H_
class Window {
public:
Window();
~Window();
};
#endif
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
我在编译器中添加了以下路径包括path(-I):
"$(OPENCV)/cv/include"
"$(OPENCV)/cxcore/include"
"$(OPENCV)/otherlibs/highgui"
Run Code Online (Sandbox Code Playgroud)
我已将以下库添加到链接器(-l):
cv
cxcore
highgui
Run Code Online (Sandbox Code Playgroud)
以下库搜索路径(-L):
"$(OPENCV)/lib/"
Run Code Online (Sandbox Code Playgroud)
Eclipse,编译器和链接器都成功地包含了头文件和库.我正在使用Cygwin的GNU C/C++编译器和链接器.
编译时,我收到以下make错误:
src/Window.d:1: *** multiple target patterns. Stop.
Window.d包含:
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:
Run Code Online (Sandbox Code Playgroud)
我尝试从Window.d(从第2行开始)删除所有OpenCV标头,但错误仍然存在.此外,我已经更新了Eclipse和OpenCV,但都无济于事.
你有什么值得尝试的想法吗?我愿意尝试任何事情!
Jam*_*lis 26
你在Cygwin安装工作吗?
我在使用Cygwin之前已经看到过这个问题 - 基本上,在路径中make看到:并认为它是另一个目标定义,因此错误.
如果您正在使用Cygwin安装,则可以尝试替换c:/使用/cygdrive/c/.如果没有,您可以尝试使用相对路径或使用网络安装,看看是否修复它.
小智 6
根据其他互联网资料,这与cygwin制作的与windows路径名称有关的问题有关,特别是c:.对我来说,它可以设置相对路径.
例如,如果你有类似的东西
proj/mymodule/headers/afile.h
proj/mymodule/source/abc/afile.c
Run Code Online (Sandbox Code Playgroud)
只需../mymodule/headers/
在编译器的项目配置中添加包含路径,这将找到标题afile.h并生成具有相对路径的make文件.(编译器命令会有语句-I../mymodule/headers/)
看起来像执行目录始终是项目基目录.