Bullet Physics物理引擎库编译配置

编译准备

  1. github下载Bullet库的源码:bulletphysics/bullet3(github.com)

  2. 安装CMake:Download | CMake。如果像我一样使用的是Visual Studio 2022,就需要下载最新版的CMake,否则后面会无法生成解决方案

开始编译

  1. 打开cmake-gui,找到下载的Bullet源码,找到bullet3-master/CMakeLists.txt,把它拖到CMake界面里,设置下二进制文件的构建路径

  2. 一定要勾选这个选项:

    不然会导致之后跟已有项目链接时出错,因为大部分库都是用这个选项编译的,具体解释可以参考这篇文章:/MD 与 /MT、/MTD与/MDD的区别

  3. 其它选项保持默认就好了,点击[Configure]选择自己的VS版本。默认按照64位进行编译,这里要注意Bullet库也只能编译成64位的,不能选择其它平台,所以自己的项目也一定要可以在64位下进行编译

  4. 之后点击[Generate]生成解决方案,然后就可以在设置的构建目录下找到BULLET_PHYSICS.sln,打开它。编译ALL_BUILD这个项目就可以全部编译。根据需要可以按照DebugRelease分别编译一次

使用库

  1. 构建路径 > lib下找到对应的库文件。因为文档基本都是Bullet2的(命名以bt开头),我这里也只选择了Bullet2的库文件,也就是LinearMath.libBulletDynamics.libBulletCollision.lib。对应Debug版的会有相应的后缀。把他们复制到项目的库路径里,并设置C++ 链接器的输入(注意Debug和Release版要分别配置)

  2. 回到Bullet的源码路径,把src文件夹里的BulletCollision/BulletDynamics/LinearMath/btBulletCollisionAll.cppbtBulletCollisionCommon.hbtBulletDynamicsAll.cppbtBulletDynamicsCommon.hbtLinearMathAll.cpp都放到项目的包含路径里。因为这里为了方便看源码而没有去掉.cpp文件,所以一定不能直接放到项目文件夹下,不然链接时会出现符号重复定义的错误

  3. 再回到Bullet的源码路径,找到examples > HelloWorld > HelloWorld.cpp,尝试复制到项目里,选择x64编译运行