【问题标题】:Why can't C++ find GLM headers?为什么 C++ 找不到 GLM 标头?
【发布时间】:2026-02-02 18:10:01
【问题描述】:

我没有将 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

【问题讨论】:

    标签: c++ opengl directory directory-structure glm-math


    【解决方案1】:

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

    sudo apt-get install libglm-dev
    

    【讨论】:

    • 你是我们的英雄:哈哈:
    【解决方案2】:

    GLM 不是 OpenGL 的一部分。它是一个 C++ 数学库,与 GLSL 有很多相同的语法。为了使用它,您需要从here 下载它或使用您的包管理器安装它(尽管如果您在这台机器上没有管理权限,那么您将无法这样做)。

    一旦你有了它,你需要将它添加到你的包含路径中:

     g++ main.cpp -lGL -lglut -lGLEW -I/path/to/glm/headers
    

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

    【讨论】:

    • 谢谢你的帮助,我读到因为它只是头文件,没有什么要安装的,这是真的吗?另外,我已经下载了它,它与我的 main.cpp 在同一个文件夹中。我的 -I 论点应该说什么?
    • @BarneyChambers 试试-I.-I./headers
    • 谢谢艾玛迪斯,这很有效。我的 openGL 仍然有错误,但这是一个很大的帮助