Linux上构建Box2D(Ubuntu)/ glfw

时间:2015-11-28 15:21:38

标签: box2d glfw egl

我一直在尝试通过cmake安装Box2D - >使

对不起,这太长了,最后还是TL; DR !!

编辑大约3个月左右后,我解决了(我认为)每次事故|见TL; DR

继承人我做了什么: 首先,从gitHub存储库下载Box2D,解压缩并将其移动到方便的位置,通过终端打开Build目录。 然后使用

cmake -DBOX2D_INSTALL=ON -DBOX2D_BUILD_SHARED=ON ..

,就像Building.txt告诉我的那样,它运行良好。 然后想要

make

但是通过internal.h文件中的错误得到了87%:

“#error”未选择支持的窗口创建API“

在查看它的来源后,我发现internal.h正在检查我是否使用了win32,cocoa或x11平台:

#if defined(_GLFW_COCOA)
 #include "cocoa_platform.h"
#elif defined(_GLFW_WIN32)
 #include "win32_platform.h"
#elif defined(_GLFW_X11)
 #include "x11_platform.h"
#else
 #error "No supported window creation API selected"
#endif

因为我安装了其他依赖xorg的库,并且它们似乎工作得很好,所以我强迫它使用x11_platform.h(通过在提供的config.h文件中定义_GLFW_X11。)。

然后第二次运行make命令。下一个错误将出现在x11_platform.h文件中:

“#error”未选择支持的上下文创建API“

它似乎与上面几乎相同,只是使用GLX和EGL:

#if defined(_GLFW_GLX)
 #define _GLFW_X11_CONTEXT_VISUAL window->glx.visual
 #include "glx_platform.h"
#elif defined(_GLFW_EGL)
 #define _GLFW_X11_CONTEXT_VISUAL window->egl.visual
 #define _GLFW_EGL_NATIVE_WINDOW  window->x11.handle
 #define _GLFW_EGL_NATIVE_DISPLAY _glfw.x11.display
 #include "egl_platform.h"
#else
 #error "No supported context creation API selected"
#endif

这次我做了一些关于这些应该是什么的研究(并检查我是否有这些mesa thingys for egl)。看起来,人们说egl是未来。所以我在config.h文件中定义了_GLFW_EGL。

是的,你猜对了,下一个错误。这次甚至是致命的D:在egl_platform.h(我实际上尝试过使用GLX后出现这个错误,同样的事情)

“致命错误:../ debug / EGL / eggxt.h:没有这样的文件或目录”

然后我在我的计算机上搜索了一个eglext.h,并在我的/ usr / include / EGL中找到了一个

所以我编辑了Box2D / glfw / egl_platform.h文件,实际上是一个注释,我可能需要更改eglext.h的路径。所以我做到了。

#include "/usr/include/EGL/eglext.h"

这样,它实际上达到了100%! 但后来发生这种情况: http://pastebin.com/bS2qY2KC 我有 NO 了解这应该是什么意思...... 我所理解的是,有些函数在libglfw.a中调用了一些他们无法读取的东西。 我检查了是否有这个libglfw.a文件,确实是在/ usr / lib / x86_64-linux-gnu下。 我搜索了一下,并得知我通过apt-get获得的glfw软件包可能已过时/坏了,所以我将其删除并从https://github.com/glfw/glfw手动安装了glfw

TL; DR:

基本上我在构建Box2D时得到了这个:[参见上面的pastebin,因为一些愚蠢的原因我不允许发布超过2个链接]

我不知道这应该告诉我什么。 我看到libglfw.a遍布整个地方,所以我完全重新安装了glfw(手动)使用它的gitHub文件。 仍然完全一样。

如果有人能告诉我那里发生了什么,我将非常感激。

编辑:这是我设法通过cmake安装它的方式(正如我上面尝试的那样......): 在Build目录中:

cmake -DBOX2D_INSTALL=ON -DBOX2D_BUILD_SHARED=ON -DBOX2D_BUILD_STATIC=OFF -DBOX2D_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON ..
sudo make
make install

1 个答案:

答案 0 :(得分:-2)

尝试以下一系列命令:

git clone https://github.com/flyover/Box2D

(cd Box2D && git submodule init && git submodule update --recursive)

(mkdir -p Build && cd Build && cmake .. && make && Testbed/Testbed)