C++ 对于我正在交叉编译的程序,如何在ubuntu上交叉编译GLEW到windows?

C++ 对于我正在交叉编译的程序,如何在ubuntu上交叉编译GLEW到windows?,c++,windows,opengl,ubuntu,glew,C++,Windows,Opengl,Ubuntu,Glew,我正在用OpenGL、GLU、freeGLUT、GLEW和SOIL(OpenGL纹理的图像加载器)进行一个小项目。我想将我的项目交叉编译到windows,因为它最终将成为我计划销售的一款游戏,而且使用windows的人比使用Linux的人要多。不幸的是,我使用的交叉编译器MinGW不支持GLEW网站上的GLEW预构建库 我已经下载了GLEW源代码包,如何将其编译成我需要的libglew32.a(以及另外两个我忘记名字的文件,我认为其中一个是静态版本)文件?已经包含了一个makefile,我应该使

我正在用OpenGL、GLU、freeGLUT、GLEW和SOIL(OpenGL纹理的图像加载器)进行一个小项目。我想将我的项目交叉编译到windows,因为它最终将成为我计划销售的一款游戏,而且使用windows的人比使用Linux的人要多。不幸的是,我使用的交叉编译器MinGW不支持GLEW网站上的GLEW预构建库

我已经下载了GLEW源代码包,如何将其编译成我需要的libglew32.a(以及另外两个我忘记名字的文件,我认为其中一个是静态版本)文件?已经包含了一个makefile,我应该使用它吗?(我只是不确定这是否会使一个库对MinGW可用)


TL;DR我如何在ubuntu上编译GLEW for MinGW?

当创建打算在多个平台上运行的软件并且您计划交叉编译时,最好将第三方库的源代码(或者库本身,如果您没有源代码)包含到您的项目源代码和构建树中

理想情况下,所有内容都可以从源代码树中构建,但有时(通常)情况并非如此,因此您必须手动进行多个构建,在主项目的构建系统可以访问的某个位置复制生成的二进制文件

对于交叉编译,它通常归结为精确指定要使用的工具链二进制文件。例如,在Linux上,MinGW交叉编译器的名称通常类似于
i686-w64-mingw32-…
(或类似名称)。配置第三方库构建时,必须指定要使用的库。根据构建系统的不同,这可以通过
CC
CXX
LD
和一些其他环境变量来实现,也可以通过
build
HOST
TARGET
变量来实现(参见此处)

最好的情况是,如果您可以将第三方的所有内容集成到您的项目构建系统中,因为这样您就不用手动管理这些内容了。就我个人而言,我非常喜欢CMake构建系统,因为它支持树外构建,如果你有使用CMake的库,你可以简单地将它们的源树复制到项目的子目录中,并包含它们的CMake配置

注意,如果构建本身不太复杂,那么替换项目构建系统通常是一个有效的选择(替换Linux内核或ffmpeg之类的构建系统是疯狂的,替换GLFW之类的构建系统可能是一个可行的选择)