我没有权限将 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>
glm 文件夹与此代码所在的 main.cpp 位于同一目录中。我认为它不起作用,因为它正在 usr/include 中寻找 glm ,其中内置头文件在其中(我使用的是 redhat linux)
我怎样才能阻止这种情况发生,因为我无法运行:
g++ main.cpp -lGL -lglut -lGLEW
没有这些错误:
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
我的答案与作者的问题并不真正相关,但我只是把它留在这里给那些从 ubuntu 来到这里但缺少软件包的人
sudo apt-get install libglm-dev
GLM 不是 OpenGL 的一部分。它是一个 C++ 数学库,其语法与 GLSL 基本相同。为了使用它,您需要从here下载它或使用包管理器安装它(尽管如果您没有这台计算机的管理权限,那么您将无法执行此操作)。
一旦获得它,您需要将其添加到您的包含路径中:
g++ main.cpp -lGL -lglut -lGLEW -I/path/to/glm/headers
尽管如果您使用包管理器安装它,它可能最终会出现在您的系统包含路径中。
我使用 CLion 并遇到了同样的问题。
当我这样做时,它不起作用,但是当我执行“PATH_TO_GLM_FROM_CONTENT_ROOT”时,它确实起作用。由于某种原因,“<>”之间的路径导致了它。
当我这样做时,它确实起作用了。
#include "glm\glm.hpp" #include "glm\gtc\matrix_transform.hpp" #include "glm\gtc\type_ptr.hpp"