今回はOBS StudioのCMakeの実行ルートを追ってみます。[OBS ver30, Windowsルート]
add_subdirectoryコマンドで実行されるプロセスがあるので、厳密な実行ルートではないかもしれませんが参考にどうぞ。
1.cmakeフォルダ
root(obs-studio)フォルダのCMakeList.txtからbootstrap->compilierconfig->defaults->helpersの順にincludeされていきます。
参照されているファイルは下記のような階層内にあります。
└─obs-studio
├─CMakeLists.txt
├─CMakePresets.json
├─cmake
│ ├─common
│ │ ├─versionconfig.cmake
│ │ ├─bootstrap.cmake
│ │ ├─buildnumber.cmake
│ │ ├─buildspec_common.cmake
│ │ ├─ccache.cmake
│ │ ├─compiler_common.cmake
│ │ ├─cpackconfig_common.cmake
│ │ ├─helpers_common.cmake
│ │ └─osconfig.cmake
│ │
│ ├─windows
│ │ ├─buildspec.cmake
│ │ ├─compilerconfig.cmake
│ │ ├─cpackconfig.cmake
│ │ ├─defaults.cmake
│ │ ├─helpers.cmake
… … …
2.libobs・testフォルダ
helpers.cmakeファイルが実行された後、libobs,libobs-d3d11,libobs-winrt,libobs-openglが順番に実行されます。
libobs系が終わった後にpluginsとtestフォルダ内のCMakeLists.txtが実行されます。
参照されているファイルは下記のような階層内にあります。
└─obs-studio
├─CMakeLists.txt
├─CMakePresets.json
├─cmake
│ ├─libobs
│ │ ├─cmake
│ │ │ ├─os-windows.cmake
│ │ … …
│ │ └─CMakeList.txt
│ ├─libobs-d3d11
│ │ ├─cmake
│ │ │ …
│ │ │ └─windows
│ │ … └─obs-module.rc.in
│ │ └─CMakeList.txt
│ ├─libobs-winrt
│ │ …
│ │ └─CMakeList.txt
│ ├─libobs-opengl
│ │ …
│ │ └─CMakeList.txt
│ ├─test
│ │ ├─test-input
│ │ │ …
│ │ │ └─CMakeList.txt
│ │ ├─win
│ │ │ …
│ │ │ └─CMakeList.txt
… … …
3.UI・Modules・depsフォルダ
testフォルダ内のCMakeLists.txt実行後にUIフォルダとModulesフォルダを順に実行。
(※UIフォルダ内の呼び出しは数が多いので後述)
depsフォルダ内では下記の順で実行されます。
w32-pthreads
ipc-util
blake2
glad
media-playback
file-updater
obs-scripting
opts-parser
libcaption
uthash
happy-eyeballs
参照されているファイルは下記のような階層内にあります。
└─obs-studio
├─CMakeLists.txt
├─CMakePresets.json
├─cmake
│ ├─Modules
│ …
│ ├─VersionConfig.cmake
│ ├─DeprecationHelpers.cmake
│ ├─ObsHelpers.cmake
│ ├─ObsDefaults_Windows.cmake
│ ├─ObsHelpers_Windows.cmake
│ ├─CopyMSVCBins.cmake
│ └─CMakeList.txt
├─UI
├─deps
…
4.UIフォルダ内のCMake実行ルート
UIフォルダ内のCMake実行順は下記の通り。
UI/obs-frontend-api/CMakeLists.txt
UI/cmake/ui-qt.cmake
UI/cmake/ui-elements.cmake
UI/cmake/ui-windows.cmake
UI/cmake/feature-importers.cmake
UI/cmake/feature-browserpanels.cmake
UI/cmake/feature-twitch.cmake
UI/cmake/feature-restream.cmake
UI/cmake/feature-youtube.cmake
UI/cmake/feature-sparkle.cmake
UI/cmake/feature-whatsnew.cmake
UI/frontend-plugins/CMakeLists.txt/CMakeLists.txt
UI/frontend-plugins/aja-output-ui/CMakeLists.txt
UI/frontend-plugins/decklink-captions/CMakeLists.txt
UI/frontend-plugins/decklink-output-ui/CMakeLists.txt
UI/frontend-plugins/frontend-tools/CMakeLists.txt
UI/cmake/os-windows.cmake
UI/cmake/windows/obs.rc.in
UI/win-update/updater/CMakeLists.txt