AtomicGameEngine - CMake(2)
それじゃぁ、前回の続きから
/Source/CMakeLists.txt
option(ATOMIC_JAVASCRIPT "Build JS Bindings" ON)
ATOMIC_JAVASCRIPTにONを入れているだけ。set()との違いはおいておく。
if (WEB) set(ATOMIC_DOTNET OFF) else () option(ATOMIC_DOTNET "Build .NET Bindings" ON) endif ()
option(ATOMIC_EDITOR "Build Editor" ON) option(ATOMIC_DATABASE_SQLITE "Enable SQLite database subsystem" OFF) option(ATOMIC_DATABASE_ODBC "Enable ODBC database subsystem" OFF) option(ATOMIC_IK "Enable inverse kinematics subsystem" OFF) option(ATOMIC_PROFILING "Enable profiler" ${ATOMIC_RELEASE_OFF})
SQLITEをoff、ODBCをoff、IKをoff、PROFILINGをon
if (WIN32) option (ATOMIC_D3D9 "Use DirectX 9" OFF) option (ATOMIC_OPENGL "Use OpenGL" OFF) if (NOT ATOMIC_D3D9 AND NOT ATOMIC_OPENGL) set (ATOMIC_D3D11 ON) endif () endif ()
win32の場合は、directx9とopenglをoffにして、directx11をonに
add_subdirectory(ThirdParty) add_subdirectory(Atomic) if (ATOMIC_JAVASCRIPT) add_subdirectory(AtomicPlayer) add_subdirectory(AtomicJS) add_subdirectory(AtomicPlayerJS) endif () if (ATOMIC_WEBVIEW) add_subdirectory(AtomicWebView) endif () if (ATOMIC_DOTNET) add_subdirectory(AtomicApp) add_subdirectory(AtomicNET) endif () if (ATOMIC_DESKTOP) if (ATOMIC_DOTNET OR ATOMIC_JAVASCRIPT) add_subdirectory(AtomicTool) endif () add_subdirectory(Tools) add_subdirectory(ToolCore) if (ATOMIC_JAVASCRIPT) add_subdirectory(ToolCoreJS) endif () if (ATOMIC_WEBVIEW AND ATOMIC_EDITOR) add_subdirectory(AtomicEditor) endif () endif () include(AtomicDocList)
Macで実行してると、とりあえずここにあるadd_subdirectory()全部実行されてるっぽい。だから順番的にはこんな感じ。
ThirdParty
↓
Atomic
↓
AtomicPlayer
↓
AtomicJS
↓
AtomicPlayerJS
↓
AtomicWebView
↓
AtomicApp
↓
AtomicNET
↓
AtomicTool
↓
Tools
↓
ToolCore
↓
ToolCoreJS
↓
AtomicEditor
順番関係あるかどうか分からんけど(笑)
最後のinclude(AtomicDocList)を先に見ておく
/Build/CMake/Modules/AtomicDocList.cmake
AtomicDocListは/Build/CMake/Modules/
にあるやつ
find_program(CLDOC cldoc) if (CLDOC) add_custom_target(AtomicEngineDocs DEPENDS AtomicEditorDocs AtomicDocs ) endif ()
こんな感じで、特に処理はない。cldocが何かは未だ不明
/Source/ThirdParty
サードパーティ製ライブラリ
ライブラリ | |
---|---|
ASIO | ネットワーキング、非同期I/O |
Assimp | 誰かのブログ |
Box2D | 2Dの物理エンジン |
Bullet | 3Dの物理エンジン |
Civetweb | 軽量webサーバ |
Recast & Detour | Navigation Meshライブラリ |
DetourCrowd | Navigation Meshライブラリ |
DetourTileCache | Navigation Meshライブラリ |
Duktape | c/c++でjavascript文実行 |
easy_profiler | プロファイリングツール |
FreeType | フォント描画ライブラリ |
GLEW | OpenGL拡張を手軽に用いることができる |
ik | inverse kinematics |
imgui | OpenGLやDirectXなどの描画環境の中で動くGUIフレームワーク |
JO | JPEGライター |
kNet | tcp/udp関係 |
LibCpuId | CPUの情報を取得 |
libcurl | クライアントサイドURL転送ライブラリ |
libsquish | DXT圧縮ライブラリ(画像圧縮) |
LZ4 | 可逆圧縮アルゴリズム |
MojoShader | DXBC (古いHLSLバイトコード)をGLSLシェーダーに変換するライブラリ |
nanodbc | ODBC を使ったアプリケーションの開発サポート |
nativefiledialog | OS独自のファイルダイアログ |
openssl | OpenSSL |
Poco | ネット系 |
PugiXml | XMLパーサー |
rapidjson | JSONパーサー、ジェネレーター |
SDL | マルチメディアライブラリ |
SQLite | SQLite |
StanHull | 凸包作成アルゴリズム |
STB | テクスチャ系 |
TurboBadger | UI系(GitHub) |
WebSocketPP | C++のWebSocketライブラリ |
zlib | 圧縮系 |
今回はここまでで終了。
余談
そういえば、一回cmake実行したら、後でCMakeLists.txtが変更されてたら、makeを実行したらcmakeも自動で実行されるってことを知った。 あと、UE4ではどうやってプロジェクトファイル作ってるんだろって思って見たら、C#でやってた。