配置GLM的正确方法是什么

时间:2014-10-06 16:45:17

标签: glm-math

最近,我启用了/ W4警告(MSVC)来清理项目中的一些内容,并注意到GLM使用#define GLM_HAS_ANONYMOUS_UNION保护的非标准编译器扩展,这会导致很长的警告。

似乎有编译器功能检测机制,但由于Windows SDK依赖性,我无法完全禁用编译器扩展,无论如何都不鼓励/ Za作为bug。那么在GLM中禁用该特定事物的正确方法是什么? 我可以在我使用GLM的每个地方拍一个#undef但是有一个“适当的”地方来配置这些东西,比如一个单独的配置文件或什么?我正在不时升级GLM,所以我不想在GLM的代码中修改那个定义。

1 个答案:

答案 0 :(得分:1)

我遇到了和你一样的问题。 GLM将尝试使用编译器的所有功能,如果它检测到VS,它将使用非标准扩展来做一些奇特的事情。

如果你想要这些非标准的东西消失(例如无名的工会/结构) 您可以使用

将GLM切换到标准模式
#define GLM_FORCE_CXX11 

就在你包含任何glm标题之前。

我在手册中插入了以下信息: http://glm.g-truc.net/0.9.7/glm-0.9.7.pdf

或者,您可以通过pragma warning push

查看禁用此非常具体的警告
#pragma warning(push)
#pragma warning(disable:4201)   // suppress even more warnings about nameless structs
#include<glm/glm.hpp>
#pragma warning pop

https://msdn.microsoft.com/en-us/library/aa273936(v=vs.60).aspx

的更多信息