Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-执行makefile时未找到目录_C++_Makefile - Fatal编程技术网

C++ C++;-执行makefile时未找到目录

C++ C++;-执行makefile时未找到目录,c++,makefile,C++,Makefile,操作系统:Windows 10-编译器:mingw64 我有一个使用OpenGL的非常简单的程序。我唯一的文件,main.cpp,如下所示: /* * OGL02Animation.cpp: 3D Shapes with animation */ //#include <windows.h> // for MS Windows #include <GL/glut.h> // GLUT, include glu.h and gl.h /* Global varia

操作系统:Windows 10-编译器:mingw64

我有一个使用OpenGL的非常简单的程序。我唯一的文件,
main.cpp
,如下所示:

/*
 * OGL02Animation.cpp: 3D Shapes with animation
 */
//#include <windows.h>  // for MS Windows
#include <GL/glut.h>  // GLUT, include glu.h and gl.h

/* Global variables */
char title[] = "3D Shapes with animation";
GLfloat anglePyramid = 0.0f;  // Rotational angle for pyramid [NEW]
GLfloat angleCube = 0.0f;     // Rotational angle for cube [NEW]
int refreshMills = 15;        // refresh interval in milliseconds [NEW]

/* Initialize OpenGL Graphics */
void initGL() {
   glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black and opaque
   glClearDepth(1.0f);                   // Set background depth to farthest
   glEnable(GL_DEPTH_TEST);   // Enable depth testing for z-culling
   glDepthFunc(GL_LEQUAL);    // Set the type of depth-test
   glShadeModel(GL_SMOOTH);   // Enable smooth shading
   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);  // Nice perspective corrections
}

/* Handler for window-repaint event. Called back when the window first appears and
   whenever the window needs to be re-painted. */
void display() {
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear color and depth buffers
   glMatrixMode(GL_MODELVIEW);     // To operate on model-view matrix

   // Render a color-cube consisting of 6 quads with different colors
   glLoadIdentity();                 // Reset the model-view matrix
   glTranslatef(1.5f, 0.0f, -7.0f);  // Move right and into the screen
   glRotatef(angleCube, 1.0f, 1.0f, 1.0f);  // Rotate about (1,1,1)-axis [NEW]

   glBegin(GL_QUADS);                // Begin drawing the color cube with 6 quads
      // Top face (y = 1.0f)
      // Define vertices in counter-clockwise (CCW) order with normal pointing out
      glColor3f(0.0f, 1.0f, 0.0f);     // Green
      glVertex3f( 1.0f, 1.0f, -1.0f);
      glVertex3f(-1.0f, 1.0f, -1.0f);
      glVertex3f(-1.0f, 1.0f,  1.0f);
      glVertex3f( 1.0f, 1.0f,  1.0f);

      // Bottom face (y = -1.0f)
      glColor3f(1.0f, 0.5f, 0.0f);     // Orange
      glVertex3f( 1.0f, -1.0f,  1.0f);
      glVertex3f(-1.0f, -1.0f,  1.0f);
      glVertex3f(-1.0f, -1.0f, -1.0f);
      glVertex3f( 1.0f, -1.0f, -1.0f);

      // Front face  (z = 1.0f)
      glColor3f(1.0f, 0.0f, 0.0f);     // Red
      glVertex3f( 1.0f,  1.0f, 1.0f);
      glVertex3f(-1.0f,  1.0f, 1.0f);
      glVertex3f(-1.0f, -1.0f, 1.0f);
      glVertex3f( 1.0f, -1.0f, 1.0f);

      // Back face (z = -1.0f)
      glColor3f(1.0f, 1.0f, 0.0f);     // Yellow
      glVertex3f( 1.0f, -1.0f, -1.0f);
      glVertex3f(-1.0f, -1.0f, -1.0f);
      glVertex3f(-1.0f,  1.0f, -1.0f);
      glVertex3f( 1.0f,  1.0f, -1.0f);

      // Left face (x = -1.0f)
      glColor3f(0.0f, 0.0f, 1.0f);     // Blue
      glVertex3f(-1.0f,  1.0f,  1.0f);
      glVertex3f(-1.0f,  1.0f, -1.0f);
      glVertex3f(-1.0f, -1.0f, -1.0f);
      glVertex3f(-1.0f, -1.0f,  1.0f);

      // Right face (x = 1.0f)
      glColor3f(1.0f, 0.0f, 1.0f);     // Magenta
      glVertex3f(1.0f,  1.0f, -1.0f);
      glVertex3f(1.0f,  1.0f,  1.0f);
      glVertex3f(1.0f, -1.0f,  1.0f);
      glVertex3f(1.0f, -1.0f, -1.0f);
   glEnd();  // End of drawing color-cube

   // Render a pyramid consists of 4 triangles
   glLoadIdentity();                  // Reset the model-view matrix
   glTranslatef(-1.5f, 0.0f, -6.0f);  // Move left and into the screen
   glRotatef(anglePyramid, 1.0f, 1.0f, 0.0f);  // Rotate about the (1,1,0)-axis [NEW]

   glBegin(GL_TRIANGLES);           // Begin drawing the pyramid with 4 triangles
      // Front
      glColor3f(1.0f, 0.0f, 0.0f);     // Red
      glVertex3f( 0.0f, 1.0f, 0.0f);
      glColor3f(0.0f, 1.0f, 0.0f);     // Green
      glVertex3f(-1.0f, -1.0f, 1.0f);
      glColor3f(0.0f, 0.0f, 1.0f);     // Blue
      glVertex3f(1.0f, -1.0f, 1.0f);

      // Right
      glColor3f(1.0f, 0.0f, 0.0f);     // Red
      glVertex3f(0.0f, 1.0f, 0.0f);
      glColor3f(0.0f, 0.0f, 1.0f);     // Blue
      glVertex3f(1.0f, -1.0f, 1.0f);
      glColor3f(0.0f, 1.0f, 0.0f);     // Green
      glVertex3f(1.0f, -1.0f, -1.0f);

      // Back
      glColor3f(1.0f, 0.0f, 0.0f);     // Red
      glVertex3f(0.0f, 1.0f, 0.0f);
      glColor3f(0.0f, 1.0f, 0.0f);     // Green
      glVertex3f(1.0f, -1.0f, -1.0f);
      glColor3f(0.0f, 0.0f, 1.0f);     // Blue
      glVertex3f(-1.0f, -1.0f, -1.0f);

      // Left
      glColor3f(1.0f,0.0f,0.0f);       // Red
      glVertex3f( 0.0f, 1.0f, 0.0f);
      glColor3f(0.0f,0.0f,1.0f);       // Blue
      glVertex3f(-1.0f,-1.0f,-1.0f);
      glColor3f(0.0f,1.0f,0.0f);       // Green
      glVertex3f(-1.0f,-1.0f, 1.0f);
   glEnd();   // Done drawing the pyramid

   glutSwapBuffers();  // Swap the front and back frame buffers (double buffering)

   // Update the rotational angle after each refresh [NEW]
   anglePyramid += 0.2f;
   angleCube -= 0.15f;
}

/* Called back when timer expired [NEW] */
void timer(int value) {
   glutPostRedisplay();      // Post re-paint request to activate display()
   glutTimerFunc(refreshMills, timer, 0); // next timer call milliseconds later
}

/* Handler for window re-size event. Called back when the window first appears and
   whenever the window is re-sized with its new width and height */
void reshape(GLsizei width, GLsizei height) {  // GLsizei for non-negative integer
   // Compute aspect ratio of the new window
   if (height == 0) height = 1;                // To prevent divide by 0
   GLfloat aspect = (GLfloat)width / (GLfloat)height;

   // Set the viewport to cover the new window
   glViewport(0, 0, width, height);

   // Set the aspect ratio of the clipping volume to match the viewport
   glMatrixMode(GL_PROJECTION);  // To operate on the Projection matrix
   glLoadIdentity();             // Reset
   // Enable perspective projection with fovy, aspect, zNear and zFar
   gluPerspective(45.0f, aspect, 0.1f, 100.0f);
}

/* Main function: GLUT runs as a console application starting at main() */
int main(int argc, char** argv) {
   glutInit(&argc, argv);            // Initialize GLUT
   glutInitDisplayMode(GLUT_DOUBLE); // Enable double buffered mode
   glutInitWindowSize(640, 480);   // Set the window's initial width & height
   glutInitWindowPosition(50, 50); // Position the window's initial top-left corner
   glutCreateWindow(title);          // Create window with the given title
   glutDisplayFunc(display);       // Register callback handler for window re-paint event
   glutReshapeFunc(reshape);       // Register callback handler for window re-size event
   initGL();                       // Our own OpenGL initialization
   glutTimerFunc(0, timer, 0);     // First timer call immediately [NEW]
   glutMainLoop();                 // Enter the infinite event-processing loop
   return 0;
}
作为IDE,我使用代码块。当我在IDE上编译和运行程序时,工作正常。同样,当我在命令行中编译和运行程序时,工作正常:

g++ main.cpp -o output.exe -I"C:\Program Files\mingw-w64\mingw64\include" -lglu32 -lopengl32 -lfreeglut
唯一的问题是,当我使用gnu命令
make
时。当我在
cmd
中执行
make test
时,我得到以下错误:

g++-c-o main.o main.cpp main.cpp:5:10:致命错误:GL/glut.h:否 这样的文件或目录#include//GLUT,include glu.h 和gl.h ^~~~~~~~~~~~~~编译已终止。make:**[:main.o]错误1

库和路径是否在
makefile
中定义得不好?我无法完全理解为什么
make
不起作用


谢谢。

您定义了一条规则
.cc.o
,该规则使用您自己的变量名定义编译。 但是,您的文件名为name
main.cpp
,因此将使用默认规则:

.cpp.o:
    $(COMPILE.cpp) $(OUTPUT_OPTION) $<

因此,要么将
main.cpp
的文件名更改为
main.cc
COMPILE.cpp
的定义,要么更改
.cpp.o
目标的定义。或者,您可以将您的标志添加到默认变量名并删除.cc.o规则。

您定义了一个规则
.cc.o
,该规则使用您自己的变量名定义编译。 但是,您的文件名为name
main.cpp
,因此将使用默认规则:

.cpp.o:
    $(COMPILE.cpp) $(OUTPUT_OPTION) $<

因此,要么将
main.cpp
的文件名更改为
main.cc
COMPILE.cpp
的定义,要么更改
.cpp.o
目标的定义。或者,您可以将您的标志添加到默认变量名中,并删除.cc.o规则。

您没有为GL添加包含路径。GL/glut.h的路径是什么?C:\Program Files\mingw-w64\mingw64\include\GLI在makefile中找不到此行
g++-C-o main.o main.cpp
?您确定使用了正确的Makefile吗?应该是:
$(程序):$(对象)$(源)$(编译器)$(编译器框架)-o$(程序)$(对象)$(库)
,对吗?此行的输出应该是
g++--std=c++17-无饼图-I“c:\PROGRAM Files\mingw-w64\mingw64\include”-o test-L“c:\PROGRAM Files\mingw-w64\mingw64\lib”-lGL-lGLU-lglut-lm-lXi-lXmu-lglu32-lopengl32-lfreeglut
。但是实际输出是
g++-c-omain.omain.cpp
。当前您正在使用不同的makefile。给定的生成文件无法生成错误消息。Makefile必须使用大写字母
M
准确命名为
Makefile
。或者您必须调用
make-f makefile
您没有为GL添加包含路径。GL/glut.h的路径是什么?C:\Program Files\mingw-w64\mingw64\include\GLI在makefile中找不到此行
g++-C-o main.o main.cpp
?您确定使用了正确的Makefile吗?应该是:
$(程序):$(对象)$(源)$(编译器)$(编译器框架)-o$(程序)$(对象)$(库)
,对吗?此行的输出应该是
g++--std=c++17-无饼图-I“c:\PROGRAM Files\mingw-w64\mingw64\include”-o test-L“c:\PROGRAM Files\mingw-w64\mingw64\lib”-lGL-lGLU-lglut-lm-lXi-lXmu-lglu32-lopengl32-lfreeglut
。但是实际输出是
g++-c-omain.omain.cpp
。当前您正在使用不同的makefile。给定的生成文件无法生成错误消息。Makefile必须使用大写字母
M
准确命名为
Makefile
。或者您必须调用
make-f makefile
COMPILE.cpp = $(COMPILE.cc)
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
OUTPUT_OPTION = -o $@