为什么C++找不到GLM标头?

Bar*_*ers 8 c++ opengl directory directory-structure glm-math

我没有权限将GLM放入usr/local/include或usr/include,但我需要将GLM用于openGL.代码(我无法更改)查找GLM,如下所示:

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
Run Code Online (Sandbox Code Playgroud)

文件夹glm与我的main.cpp位于同一目录中,此代码来自此目录.我认为它不起作用,因为它在usr/include中寻找glm在构建的头文件中的位置(我使用的是redhat linux)

我怎么能阻止这种情况发生,因为我无法运行:

 g++ main.cpp -lGL -lglut -lGLEW
Run Code Online (Sandbox Code Playgroud)

没有这些错误:

main.cpp:46:23: error: glm/glm.hpp: No such file or directory
main.cpp:47:40: error: glm/gtc/matrix_transform.hpp: No such file or directory
main.cpp:48:32: error: glm/gtc/type_ptr.hpp: No such file or directory
main.cpp:62: error: ‘glm’ has not been declared
main.cpp:62: error: expected constructor, destructor, or type conversion before ‘cameraMatrix’
main.cpp: In function ‘int setShaderData(const unsigned int&)’:
main.cpp:102: error: ‘glm’ has not been declared
main.cpp:102: error: expected ‘;’ before ‘projection’
main.cpp:105: error: ‘glm’ has not been declared
main.cpp:105: error: ‘projection’ was not declared in this scope
main.cpp:109: error: ‘glm’ has not been declared
main.cpp:109: error: expected ‘;’ before ‘modelview’
main.cpp: In function ‘void render()’:
main.cpp:187: error: ‘cameraMatrix’ was not declared in this scope
main.cpp:187: error: ‘glm’ has not been declared
main.cpp:200: error: ‘glm’ has not been declared
Run Code Online (Sandbox Code Playgroud)

Ser*_*rCe 31

我的答案与作者的问题并没有真正的关系,但是我只是把它留给那些来自ubuntu并缺少包裹的人

sudo apt-get install libglm-dev
Run Code Online (Sandbox Code Playgroud)

  • 你是我们的英雄 :haha: (2认同)

Jhe*_*ico 13

GLM不是OpenGL的一部分.它是一个C++数学库,与GLSL具有许多相同的语法.要使用它,您需要从此处下载或使用您的包管理器进行安装(尽管如果您没有此计算机的管理权限,那么您将无法执行此操作).

获得后,需要将其添加到包含路径中:

 g++ main.cpp -lGL -lglut -lGLEW -I/path/to/glm/headers
Run Code Online (Sandbox Code Playgroud)

虽然如果使用软件包管理器安装它,它可能最终会出现在系统包含路径中.