MinGW编译Box2D
Box2D是一个著名的2D物理引擎。网上很多文章是老版本,使用cmake
编译,最新的git
版本,已经移除了cmake
支持,使用premake5
编译。本文记录了使用mingw
编译该版本的方法。
编译平台:MinGW 5.3.0 32位, Win10x64
编译器信息:
g++ -v
gcc version 5.3.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)
1、下载Box2D
源码:
Box2D
源码仓库:https://github.com/erincatto/Box2D
2、下载premake5
,
下载地址:premake5
3、编辑Box2D
目录下的premake5.lua
主要有4个部分,
configurations
调换两个配置的位置,从而默认创建release
版本;defaultplatform
改为x86
,因为这里用的是32位版本编译器;- 在
kind 'StaticLib'
后面添加两行,创建libBox2D.a
的库:1
2
3kind 'StaticLib'
+ targetextension '.a'
+ targetprefix 'lib' - 在
filter { 'system:windows' }
过滤器下,添加两个缺少的库gdi32
和imm32
;
1 | - links { 'Box2D', 'opengl32', 'winmm' } |
完整的diff
文件如下: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41diff --git "a/premake5-a174dba-left.lua" "b/premake5.lua"
index 092eab4..138cc76 100644
--- "a/premake5-a174dba-left.lua"
+++ "b/premake5.lua"
-- https://premake.github.io/
workspace 'Box2D'
- configurations { 'Debug', 'Release' }
+ configurations { 'Release','Debug' }
startproject 'Testbed'
location 'Build'
symbols 'On'
workspace 'Box2D'
platforms { 'x86_64' }
filter 'system:windows'
platforms { 'x86', 'x86_64' }
- defaultplatform 'x86_64'
+ defaultplatform 'x86'
defines { '_CRT_SECURE_NO_WARNINGS' }
filter {}
workspace 'Box2D'
project 'Box2D'
kind 'StaticLib'
+ targetextension '.a'
+ targetprefix 'lib'
files { 'Box2D/**' }
includedirs { '.' }
project 'Testbed'
'Testbed/glfw/wgl_context.c',
'Testbed/glfw/egl_context.c'
}
- links { 'Box2D', 'opengl32', 'winmm' }
+ links { 'Box2D', 'opengl32', 'winmm', 'gdi32','imm32' }
filter { 'system:macosx' }
files
将上述patch文件保存,使用git自带的patch命令,可以很方便的打补丁,命令如下:
1 | $ patch premake5.lua build.patch |
3、运行premake5
,创建Makefile
可以首先运行premake5 --help
,看看支持哪些命令。生成MinGW
可编译的Makefile
需要使用gmake2
参数:
1 | $ premake5 gmake2 |
4、修改Testbed.make
进入Build
目录,打开Testbed.make
,在文件开始处前添加CC=gcc
,注意CC
需要大写
1 | # ------注意增加这一句------ |
5、保存,开始编译
1 | mingw32-make |
6、运行
在Build\bin\x86\Release
目录下找到Testbed.exe
,运行后,在Test中选择Tumbler
,可以看到一个旋转的矩形,编译完成。
7、安装
新建安装目录Box2D
/Box2D\include
/Box2d\lib
,将.h
文件复制到include
目录下,.a
文件复制到lib
目录下,批处理文件如下
1 | @echo off |