XcodeでOBSをビルドとデバッグするまで

はじめに

今回はXcodeでOBSをビルドし、デバッグできるようにするまでの手順を記録します。 色々うまくいかなかったですが、試行錯誤してデバッグできる状態まで持っていけました。

手順

基本的にここのマニュアルの通りでOK。

Build Instructions For Mac · obsproject/obs-studio Wiki · GitHub

Xcodeを削除してしまっていたので、再インストールした。 AppStoreからだと異様に遅く、進捗が見えないので、ここからXcodeをダウンロードしてインストールした。 https://developer.apple.com/download/all/

Swigがうまく認識しなかったので、-DSWIG_DIRでobs-deps配下のSwigを使用するように指定。

% cmake -S . -B build -G Xcode \
    -DCEF_ROOT_DIR="~/development/obs-build-dependencies/cef_binary_4638_macos_x86_64" \
    -DCMAKE_PREFIX_PATH="~/development/obs-build-dependencies/obs-deps" \
    -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
    -DCMAKE_OSX_ARCHITECTURES="x86_64" -DSWIG_DIR="/Users/yoshinori_sano/development/obs-build-dependencies/obs-deps/share/swig/4.1.0"

cmakeでエラー

cmakeを実行すると以下のようにコンパイラが見つからないエラーが発生した。

% cmake -S . -B build -G Xcode \
    -DCEF_ROOT_DIR="~/development/obs-build-dependencies/cef_binary_4638_macos_x86_64" \
    -DCMAKE_PREFIX_PATH="~/development/obs-build-dependencies/obs-deps" \
    -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
    -DCMAKE_OSX_ARCHITECTURES="x86_64" -DSWIG_DIR="/Users/yoshinori_sano/development/obs-build-dependencies/obs-deps/share/swig/4.1.0"
-- OBS:  Application Version: 28.0.0-beta1-8-g76e9c64f4 - Build Number: 63
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:15 (project):
  No CMAKE_C_COMPILER could be found.



CMake Error at CMakeLists.txt:15 (project):
  No CMAKE_CXX_COMPILER could be found.

エラーログを確認すると、以下のエラーがあった。

% less ~/projects/obs-studio/build/CMakeFiles/CMakeError.log
[...]
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

調べたら、XcodeのPreferenceの設定をすれば良いことが分かった。

qiita.com

Xcodeを再インストールした時に、状態がおかしくなったのかもしれない。

Preference > Locations > Command Line Toolsが空の状態になっていたので、Xcode 13.4.1を選択。

Command Line Toolsを設定

ビルドと実行

以下のコマンドを実行したら、buildディレクトリ配下に「obs-studio.xcodeproj」が生成されるのでXcodeで開く。

% cmake -S . -B build -G Xcode \
    -DCEF_ROOT_DIR="~/development/obs-build-dependencies/cef_binary_4638_macos_x86_64" \
    -DCMAKE_PREFIX_PATH="~/development/obs-build-dependencies/obs-deps" \
    -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
    -DCMAKE_OSX_ARCHITECTURES="x86_64" -DSWIG_DIR="/Users/yoshinori_sano/development/obs-build-dependencies/obs-deps/share/swig/4.1.0"

Schemaをobsに変更してビルドを実行する。しばらくすると、OBSが起動する。

Schemaをobsに変更

OBSのビルドと起動に成功

デバッグできない問題

ブレークポイントを追加しても、無効になってしまう問題が発生。

こんな感じでブレークピントが無効になってしまう

OBSのDiscordで質問してみたものの、よく分からず。

discord.com

デバッグシンボルが付いてないのかなと思ってcmakeからやり直してみることに。

解決方法

Xcodeのプロジェクトファイルを生成する時に、-DCMAKE_BUILD_TYPE=Debug をcmakeのオプションに追加することでデバッグ版のOBSが生成されるようになる。

% cmake -S . -B build -G Xcode \
    -DCEF_ROOT_DIR="~/development/obs-build-dependencies/cef_binary_4638_macos_x86_64" \
    -DCMAKE_PREFIX_PATH="~/development/obs-build-dependencies/obs-deps" \
    -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
    -DCMAKE_OSX_ARCHITECTURES="x86_64" -DSWIG_DIR="/Users/yoshinori_sano/development/obs-build-dependencies/obs-deps/share/swig/4.1.0" -DCMAKE_BUILD_TYPE=Debug

これでブレークポイントを設定して実行したら、期待通りブレークポイントで実行停止するようになった。

ブレークポイントで実行が止まるようになった