これまでのコードリーディング日記ではビルド、ファイル構成、cmakeの実行ルートを見て来たので今回はプロジェクトとdllファイルの関係を調べていこうと思います。
1.dllファイルとプロジェクトの関係
OBS StudioのVer30(Windows版)では77個のdllファイルで構成されています。
dllファイルの出所はcmakeコマンドのadd_library(“library name” SHARED)またはadd_library(“library name” MODULE)で生成とコピーを指定されています。
同じくcmakeで生成されたvcxprojを覗くと一部名称が違いますがdllのファイル名とおおよそ一致したプロジェクトが出来ています。
vcxprojファイルのプロジェクトはエディタのソリューションエクスプローラーで見れます。
2.CopyMSVCBins.cmakeによるコピー
基本的にはFind~.cmakeで保存したdllファイルからobs-studio/bin(/64bit) 又は obs-studio/obs-plugins(/64bit)フォルダへコピーしていく処理がされています。
— ffmpeg:14ファイル —
obs-studio/bin(/64bit)内に保存
avcodec-60.dll
avdevice-60.dll
avfilter-9.dll
avformat-60.dll
avutil-58.dll
datachannel.dll
libmbedcrypto.dll
libmbedtls.dll
libmbedx509.dll
librist.dll
libsrt.dll
swresample-4.dll
swscale-7.dll
zlib.dll
— x264:1ファイル —
obs-studio/bin(/64bit)内に保存
libx264-164.dll
— curl:1ファイル —
obs-studio/bin(/64bit)内に保存
libcurl.dll
— qt:21ファイル —
obs-studio/bin(/64bit)内に保存
Qt6Core.dll
Qt6Gui.dll
Qt6Network.dll
Qt6Svg.dll
Qt6Widgets.dll
Qt6Xml.dll
imageformats/qgif.dll
imageformats/qjpeg.dll
imageformats/qsvg.dll
imageformats/qicns
imageformats/qico
imageformats/qtga
imageformats/qtiff
imageformats/qwbmp
imageformats/qwebp
platforms/qwindows.dll
platforms/qminimal
styles/qwindowsvistastyle.dll
iconengines/qsvgicon.dll
obs-studio/obs-plugins(/64bit)内に保存
libEGL.dll
libGLESv2.dll
— lua:1ファイル —
obs-studio/bin(/64bit)内に保存
lua51.dll
3.chrom関連
FindCEF.cmakeとobs-studio/cmake/windows/helpers.cmakeで処理。
obs-studio/obs-plugins(/64bit)内に保存
chrome_elf.dll
libcef.dll
4.add_libraryからの生成(MODULE)
— plugins:25ファイル —
obs-studio/obs-plugins(/64bit)内に保存
aja.dll
aja-output-ui.dll
coreaudio-encoder.dll
decklink.dll
decklink-captions.dll
decklink-output-ui.dll
image-source.dll
obs-browser.dll
obs-ffmpeg.dll
obs-filters.dll
obs-outputs.dll
obs-qsv11.dll
obs-text.dll
obs-transitions.dll
obs-vst.dll
obs-webrtc.dll
obs-websocket.dll
obs-x264.dll
frontend-tools.dll
rtmp-services.dll
text-freetype2.dll
vlc-video.dll
win-capture.dll
win-dshow.dll
win-wasapi.dll
obs-studio/data/obs-plugins 内に保存
win-capture/graphics-hook32.dll (graphics-hook.vcxproj)
win-capture/graphics-hook64.dll (graphics-hook.vcxproj)
win-dshow/obs-virtualcam-module32.dll (obs-virtualcam-module.vcxproj)
win-dshow/obs-virtualcam-module64.dll (obs-virtualcam-module.vcxproj)
— libobs関連:2ファイル —
obs-studio/bin(/64bit)内に保存
libobs-d3d11.dll
libobs-winrt.dll
5.add_libraryからの生成(SHARED)
— libobs関連:2ファイル —
obs-studio/bin(/64bit)内に保存
libobs-opengl.dll
obs.dll (libobs.vcxproj)
— UI関連:1ファイル —
obs-studio/bin(/64bit)内に保存
obs-frontend-api.dll
— deps:2ファイル —
obs-studio/bin(/64bit)内に保存
obs-scripting.dll
w32-pthreads.dll
obs-studio/data/obs-scripting(/64bit)内に保存
obslua.dll
おまけ.add_executableからの生成
exeファイルはobs-studioファイル内に10個生成されていて、その構成は下記のようになってます。
obs-studio/bin(/64bit)内に保存
obs-amf-test.exe
obs-ffmpeg-mux.exe
obs-nvenc-test.exe
obs-qsv-test.exe
obs64.exe (obs-studio.vcxproj)
data/obs-plugins/win-capture内に保存
get-graphics-offsets32.exe
get-graphics-offsets64.exe
inject-helper32.exe
inject-helper64.exe
obs-studio/obs-plugins(/64bit)内に保存
obs-browser-page.exe (obs-browser-helper.vcxproj)