搜索路径“/usr/local/include/glm/gtx”与使用未声明的标识符 'gtx'

Search paths "/usr/local/include/glm/gtx" versus Use of undeclared identifier 'gtx'

Mac Big Sur C++ OpenGL 试图从教程中学习四元数。 gtx headers 在 usr/local/include/glm 之下。 任何人都可以找出我的 header 包含或 header 搜索路径有什么问题吗?谢谢。

针对此问题失败的最小可重现代码:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h> // for window and keyboard
#include <iostream>
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/quaternion.hpp>
#include <glm/gtx/quaternion.hpp>
int main ( void )
{
    float t =1.0;
    // http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/
    glm::vec3 RotationAxis(0.0f,1.0f,0.0f);
    float RotationAngle = 90 * t;
    glm::quat MyQuaternion;
    MyQuaternion = gtx::quaternion::angleAxis(glm::degrees(RotationAngle), RotationAxis);
    return 0;
}

构建错误:

Use of undeclared identifier 'gtx'

出现在gtx行。

我的构建阶段/Header搜索路径/调试/任何架构:

/usr/local/include
/usr/local/include/glm
/usr/local/include/glm/gtx
/usr/local/Cellar
/glew/2.2.0_1/include/GL
/usr/local/Cellar
/glfw/3.3.4/include/GLFW
/usr/local/include/glad/include

我的图书馆搜索路径: $(inherited) /usr/local/Cellar/glew/2.2.0_1/lib /usr/local/Cellar/glfw/3.3.4/lib /usr/local/include /usr/local/include/glad/include

在评论link的教程一中,作者介绍

using namespace glm;

我假设他们希望您在整个教程中使用它。

您要查看的命名空间不仅仅是 gtx,还有 glm::gtx,因此如果没有 using namespace,您需要完全限定它:

MyQuaternion = glm::gtx::quaternion::angleAxis(glm::degrees(RotationAngle), RotationAxis);

不过教程好像有点老了。据我所知,它使用的 glm::gtx::quaternion 命名空间中的实体多年前已移至 glm 命名空间,请参阅 github commit.

因此,在不知道这些函数是否有任何其他更改的情况下,您似乎应该在问题和教程的代码中将 gtx::quaternion 替换为 glm