搜索路径“/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
。
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
。