今回は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
sam

sam

流山おおたかの森Techブログの管理人です。 お仕事のご依頼などはmail or Twitter[https://twitter.com/sam_sumario]で連絡頂けると反応出来ます。
Previous post OBS Studioのプラグインの作り方 #1 公式テンプレのビルド
Next post OBS Studio コードリーティング日記 #5 ; .dllファイルについて

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です