我正在开发一个使用OpenGL,GLU,freeGLUT,GLEW和SOIL(用于opengl纹理的图像加载器)的小项目。我想将我的项目交叉编译到Windows,因为它最终将成为我计划销售的游戏,并且更多的人使用Windows而不是Linux。不幸的是,我使用的交叉编译器MinGW不支持GLEW网站上预先构建的GLEW库。
我已经下载了GLEW源代码包,如何将其编译成libglew32.a(以及我忘记的两个其他文件,我认为是一个静态版本)我需要的文件?已经包含了一个makefile,我应该使用它吗? (我不确定这是否会使图书馆可用于MinGW)
TL; DR如何在ubuntu上为MinGW编译GLEW?
答案 0 :(得分:1)
当创建打算在多个平台上运行并且您计划交叉编译的软件时,最好包含第三方库的来源(如果您没有源代码,则包含自己的库)进入你的项目源和构建树。
理想情况下,所有内容都可以在源代码树之外构建,但有时(通常)并非如此,因此您需要手动执行多个构建,在主项目的构建系统可以访问的某个位置复制生成的二进制文件它们。
对于交叉编译,它通常归结为准确指定要使用的工具链二进制文件。例如,在Linux上,MinGW交叉编译器通常被命名为i686-w64-mingw32-…
(或类似)。配置第三方库时,您需要指定要使用的库。根据构建系统,这可以通过CC
,CXX
,LD
和其他一些环境变量,或通过BUILD
,HOST
和{{ 1}}变量(请参阅此处https://stackoverflow.com/a/5139451/524368)。
最好的情况是,如果您可以将第三方的所有内容集成到您的项目构建系统中,因为这可以使您免于手动管理它。我个人非常喜欢CMake构建系统,因为它支持树外构建,如果你有自己使用CMake的库你只需将源代码树复制到项目的子目录中并包含它们CMake配置。
请注意,如果构建本身并不太复杂,那么替换项目构建系统通常是一个有效的选项(替换Linux内核或ffmpeg之类的构建系统是疯狂的,替换像GLFW这样的构建系统可能是一个可行的选择)。