在Linux上构buildVTK时出现错误“GLintptr尚未声明”

在Linux上构buildVTK时,出现以下错误:

In file included from /usr/include/GL/glx.h:333:0, from /home/mildred/Work/3DKF/VTK/Rendering/vtkXOpenGLRenderWindow.cxx:31: /usr/include/GL/glxext.h:480:143: error: 'GLintptr' has not been declared 

解决方案是在构建期间定义GLX_GLXEXT_LEGACY 。 这是完成的,但在VTK 5.x的Rendering/vtkXOpenGLRenderWindow.cxx文件或VTK 6.x的Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx文件中Rendering/vtkXOpenGLRenderWindow.cxx评论。

要么取消注释该行(例如,该包的ArchLinux补丁):

 --- a/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx.orig 2014-11-23 22:16:50.000000000 +0100 +++ b/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx 2014-11-23 22:16:59.000000000 +0100 @@ -27,7 +27,7 @@ // define GLX_GLXEXT_LEGACY to prevent glx.h to include glxext.h provided by // the system -//#define GLX_GLXEXT_LEGACY +#define GLX_GLXEXT_LEGACY #include "GL/glx.h" #include "vtkgl.h" 

或者,如果您不希望侵入源代码,则可以将这些标志添加到编译器命令行中。 例如,通过将-DCMAKE_C_FLAGS=-DGLX_GLXEXT_LEGACY -DCMAKE_CXX_FLAGS=-DGLX_GLXEXT_LEGACY到您的cmake命令行。 您的cmake命令将如下所示:

 cmake -DCMAKE_C_FLAGS=-DGLX_GLXEXT_LEGACY -DCMAKE_CXX_FLAGS=-DGLX_GLXEXT_LEGACY -Wno-dev ../VTK