KK PROJEKT RED 勉強ブログ

ゲーム好き技術系大学生のメモのようなもの

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 OpenGLDirectXなどの描画環境の中で動く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#でやってた。