我一直在尝试通过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
答案 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)