Bullet 物理計算ライブラリをMinGWを用いてBuildしたので、その備忘録です。
デフォルトの設定でbuildすると、グラフィックス関連の処理をビルドする際に失敗するので、以下のサイトに記されている設定にすることでbuildを通過させました。
https://choreonoid.org/ja/manuals/latest/install/build-bullet-plugin.html
したがって、exampleの実行できません。
ダウンロードしたbullet physicsのbuildから、既存のCMakeProjectへの組み込みまで行いました。
CMakeの設定
適当にbuildフォルダを作成し、CMakeLists.txtとbuildフォルダのパスをcmake-guiに設定します。
上記のURLにあるように、以下の設定にします。
ONに設定する項目:
BUILD_EXTRAS
INSTALL_EXTRA_LIBS
INSTALL_LIBS
USE_DOUBLE_PRECISION
USE_MSVC_RUNTIME_LIBRARY_DLL
OFFに設定する項目:
BUILD_XX_DEMOS
BUILD_BULLET3
BUILD_PYBULLET
BUILD_UNIT_TESTS
新たにinstallディレクトリを作成し、そのパスをCMAKE_INSTALL_PREFIXに指定します。
文字列を指定:
CMAKE_INSTALL_PREFIX=/path/to/install
CMAKE_BUILD_TYPE=Release
設定出来たら、generateします。
コマンドプロンプトを開き、以下のコマンドを実行。
cd /path/to/build
cmake --build .
cmake --install .
先ほど指定したinstallフォルダに諸ライブラリがコピーされていると思うので、これを開発中のプロジェクトにコピーします。
既存のCMakeプロジェクトへの組み込み
無理やりな感じが否めないですが、以下のように書くことでbullet physicsのリンクができました。
cmake_minimum_required (VERSION 3.8)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED true)
project ("TestProject" VERSION 0.0)
if (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif()
set (Bullet_DIR "${PROJECT_SOURCE_DIR}/dependencies/bullet/lib/cmake/bullet")
set (Bullet_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/dependencies/bullet/include/bullet")
set (Bullet_LIBRARY_DIRS "${PROJECT_SOURCE_DIR}/dependencies/bullet/lib")
set (BULLET_DEFINITIONS "-DBT_USE_DOUBLE_PRECISION" )
set (BULLET_LIBRARIES "LinearMath;Bullet3Common;BulletInverseDynamics;BulletCollision;BulletDynamics;BulletSoftBody;LinearMath" )
find_package(Bullet CONFIG REQUIRED)
link_directories(${Bullet_LIBRARY_DIRS})
add_definitions ( ${BULLET_DEFINITIONS} )
add_executable (${CMAKE_PROJECT_NAME} "${PROJECT_SOURCE_DIR}/src/main/main.cpp")
target_link_libraries(${CMAKE_PROJECT_NAME} ${BULLET_LIBRARIES})
もし、undefined refrenceなどの関数未定義エラーが発生した場合、target_link_librariesにLinearMathやBulletCollisionを新たに追加してみてください。