MuseScore4 ビルド・インストールメモ

PG

自分で編集したコードをコンパイルしてMuseScoreを動かしてみたくなったので。

ChatGPT(MEMちょ)と苦戦しながら二人三脚で環境を整えた記録。

やったこと

前準備

  • CMake 4.0.0-rc1 インストール済みだったが、ビルドエラーにより 3.27.1 にダウングレード
  • QMake のパスを通す
    • そもそもQt本体がインストールされていなかった(入れたつもりが他のだった)
    • Qt6.5.3 をインストール(Archiveすべて表示しないと過去バージョンが表示されない)
  • ビルド用ディレクトリ作成
  • CMakeでビルドファイルを生成(下準備?)
    • Qtの追加モジュールが足りないエラー → Qt の MaintenanceTool.exe からまたインストール
    • 追加モジュールが多数必要で、しかもChatGPTの提案する名前とメンテナンスツールが出してくる名前が一致していなくて探すのが大変だった
    • 入れたモジュール
      • Qt Network Authorization(Qt6NetworkAuth)
      • Qt Multimedia
      • Qt WebEngine
      • Qt Quick Timeline
      • Qt 5 Compatibility Module
      • Qt State Machine

ビルド(第1回戦)

  • 初回ビルド、55分くらい要した
  • 打ち込んだコマンド(後から振り返ると–installしてなかったかも…?)
    • cmake --build . --config RelWithDebInfo
  • このあと、MuseScore4.exe は生成されるが、エラーで起動不可。
    • 「libsndfile-1.dllが見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。」
    • cmake --build . --config RelWithDebInfo --target install 実行
  • コンパイルエラー:管理者権限がなくて書き込めないらしい
-- Install configuration: "RelWithDebInfo"
  CMake Error at share/autobotscripts/cmake_install.cmake:36 (file):
    file cannot create directory: C:/Program Files
    (x86)/MuseScore/./autobotscripts.  Maybe need administrative privileges.
  Call Stack (most recent call first):
    share/cmake_install.cmake:37 (include)
    cmake_install.cmake:37 (include)
  • このあとパス設定をし直して、あらためてビルドする
    • 「テストプロジェクトのビルド」でデバック情報が壊れているとのエラーが多発するがとりあえずスルー
    • このあと、さっき存在していた exe が消失する事件が発生する
    • もう一度次の指示に従ってビルド
# まずビルド用ディレクトリへ移動
cd C:\Users\xxxxxxxx\git\MuseScore\build

# ステップ1:CMake構成
cmake .. -DCMAKE_PREFIX_PATH="C:/Qt/6.5.3/msvc2019_64" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="C:/Users/xxxxxxxx/musescore-install"

# ステップ2:本体ビルド+install
cmake --build . --config RelWithDebInfo --target install
  • しかしexeファイルが壊れていて起動不可。がちゃがちゃいじってみたが直らない
    • 「このアプリはお使いのPCでは実行できません」のエラー
    • exeファイルは131MBある。ビルドはできてそうだが原因不詳
    • exeファイルがあるところに手動でdllファイルをコピーしてみたりしたがエラー直らず
    • dumpbin /headers MuseScore4.exe | findstr machine をターミナル実行するも応答なし
    • この後も何度かビルド試すが、fatal error LNK1103のエラーが多発

ビルド(第2回戦)

  • build ファイルを一掃して仕切り直し
  • 次のコマンドを慎重に打ち、3回に分けて実行したらうまくいった
cmake .. `
  -DCMAKE_PREFIX_PATH="C:/Qt/6.5.3/msvc2019_64" `
  -DCMAKE_BUILD_TYPE="RelWithDebInfo" `
  -DCMAKE_INSTALL_PREFIX="C:/Users/xxxxxxxx/musescore-install" //①構成

cmake --build . --config RelWithDebInfo //②初回ビルド

//ビルド終了してから
cmake --install . --config RelWithDebInfo //③インストール
  • MuseScore4 起動できた!

教訓

  • MuseScoreの依存ライブラリのインストール(prepare.bat の実行)は不要
    • ChatGPT には必要といわれたが、MuseScoreのリポジトリに buildscripts フォルダが存在したため、構成が新しくなってbat実行は不要になったらしい
  • MuseScoreの現在バージョンでビルドに使用したQtのバージョンなどはGitHubで確認できる
    • 公式のCMake設定ファイルがある
    • 今回はchatGPTの提案を鵜呑みにしてしまったが、本来は参照すべきだろう
  • Qt Designer は必要らしいが、QtのMSVC構成をインストールしておくとしれっと入っている
  • cmakeのコマンド
    • -D は「その名前付き変数を定義する」の意味
    • コマンドは適切に分けないとエラーのもと。初回ビルドとインストールをまとめて実行して失敗した可能性がある(?)。構成→インストールで別々に実行すると確実。
    • マルチライン入力(>> )が始まってしまう。
  • ビルドで生成されるファイルの拡張子をおさらいしておきたい

追記 再ビルドチャレンジ (2025/12)

再度のフルビルド

  • ふたたびOSS開発+PR申請まで挑戦したくなり、MS開発最新版4.7.0の再ビルドを実行。
    • gitbashで最新版を落とす。手順メモ↓
cd ./git/MuseScore/
git branch //→ * master と表示されるか確認
git fetch upstream
git pull upstream master
git push origin master
  • MS最新版が求めるQtバージョンも更新されており、Qt関係も再インストール
    • Qt 6.5.3 -> 6.8.3 -> 6.9.3 に更新して解決
    • 結果的には、MS開発公式wikiを参照すべきだった。https://github.com/musescore/MuseScore/wiki/Install-Qt-and-Qt-Creator
    • はじめ、上記①実行で 6.8 以上を求めるエラー発生→6.8.3をDL
    • しかし、Qt6GuiPrivate がないとのエラーに悩まされる。Qt\6.8.3\msvc2022_64\lib\cmake\ のなかに見てもそんなのないし、追加ライブラリを選べば解決する話でもなさそう。まずDLエラーを疑い再インストールするが解決せず。
    • chatGPT相手に、「では他のWindows開発者はどうしているのか」と尋ねているうちに上のwikiを掘り当てて解決。
  • 必要なQtライブラリ
    • MSVC 2022 64-bit
    • Additional Libraries
      • Qt 5 Compatibility module
      • Qt Network Authorization
      • Qt Shader Tools
      • Qt State Machines
  • ①実行で、-DCMAKE_PREFIX_PATH="C:/Qt/6.9.3/msvc2022_64" を間違えずに。
  • ビルド時間:38分
    • -j : ビルド並列どの指定
    • Ctrl + C でビルドを中断できる

ソースコード更新+差分ビルド

  • 久々のフルビルドの後、gitbashで1日分のデータ更新して改めてビルドさせたら33分掛かってしまった。
    • しかし、その後そのまま cmake --build . をすると、1分半で終了。
タイトルとURLをコピーしました