C++20をサポートするC++コンパイラーが必要です。
- 最新のVisual Studio (推奨)
- 以前のバージョンのVisual Studio
- Visual Studio 2019 以降
- MinGW64 GCCコンパイラー
Visual Studio Installerで使用するVisual Studioの「構成のインポート」から、リポジトリ直下の.vsconfigを選択し、不足しているコンポーネントを追加してください。
補助ツールとして以下が必須です。
| ツール名 | exe名 | 説明 |
|---|---|---|
| HTML Help Workshop | hhc.exe | Visual Studio同梱のもの |
| CMake | cmake.exe | Visual Studio同梱のもので可 |
| PowerShell 7 | pwsh.exe | Windows標準とは別に用意するのでPowerShell 7の準備を参照してください。 |
| Python | python.exe | バージョンや開発用ファイルの条件はPythonの準備を参照してください。 |
| uv | uv.exe | ビルド時のCMake設定で必要です。uvの準備を参照してください。 |
| 7-Zip | 7z.exe | 外部依存ファイルの解凍に使用します。 |
| Locale Emulator | LEProc.exe | 日本語環境以外でHTMLヘルプをビルドする場合に利用します。 |
| Auto HotKey | AutoHotKey.exe | 日本語環境以外でHTMLヘルプをビルドする場合にソースに腹持ちしたLocale Emulatorを展開する際に利用します。 |
Windows標準のWindows PowerShell(powershell.exe)とは別に、PowerShell 7(pwsh.exe)が必要です。
例えば、次のコマンドで導入できます。
winget install --id Microsoft.PowerShell --exact --source winget導入後はVisual Studioとターミナルを起動し直し、新しいターミナルで確認してください。
pwsh --versionPython 3.14以降が必要です。
ビルド対象に合わせて、x64には64bit版、Win32には32bit版を導入してください。
開発用ヘッダー(Python.hなど)とpython3.dllも必要です。
例えば、x64ビルド用には次のコマンドで導入できます。
winget install --id Python.Python.3.14 --exact --architecture x64Pythonマクロのテストを実行する場合は、python3.dllがあるPythonのインストールフォルダーをPATHに追加してください。
PATHの変更後はVisual Studioとターミナルを起動し直してください。
uvはテストを実行しない場合でも、ビルド時のCMake設定で必要です。 例えば、次のコマンドで導入できます。
winget install --id astral-sh.uv --exact --source winget導入後はVisual Studioとターミナルを起動し直し、新しいターミナルで確認してください。
uv --versionインストーラをビルドする場合のみ必要です。
- Inno Setup (ISCC.exe)
- 推奨バージョン: innosetup-6.4.0.exe
choco install InnoSetup -y詳細は インストーラビルドの仕組み を参照してください。
このリポジトリでは、vcpkgや外部ライブラリをGitサブモジュールとして管理しています。 GitHubの「Source code (zip)」などを展開しただけではサブモジュールが揃わないため、Gitにより取得してください。 新しくcloneする場合は、作業用フォルダーで次のコマンドを実行します。
git clone --recurse-submodules https://github.com/sakura-editor/sakura.git既に通常のgit cloneで取得済みの場合は、sakura.slnがあるフォルダーで次のコマンドを実行してください。
git submodule update --init --recursiveサブモジュールを取得すると、Visual Studioまたはbuild-sln.batによる初回ビルド時にvcpkgが自動で初期化され、必要な外部ライブラリが取得・ビルドされます。
通常はbootstrap-vcpkg.batを手動実行する必要はありません。
うまくいかない場合、sakura.slnがあるフォルダーで以下を試してください。
.\tools\vcpkg\bootstrap-vcpkg.batVisual Studio で sakura.sln を開いてビルドします。
build-sln.bat <Platform> <Configuration>例: x64 の Release ビルド
build-sln.bat x64 ReleaseVisual Studio 2019を指定してビルド
set ARG_VSVERSION=16
build-sln.bat Win32 Release参考: MSBuildの検索について で ARG_VSVERSION の詳細を説明しています。
実行ファイル、ヘルプファイル、インストーラをすべてビルドします。
build-all.bat <Platform> <Configuration>例: Win32 の Release ビルド
build-all.bat Win32 Release-
Pythonマクロのテストには、Pythonの準備に記載したPATHの設定も必要です。
-
Documents配下では、パスの簡易表示によって
CSakuraEnvironmentTest.ExpandParameter_mixedが失敗する場合があります。 期待値のフルパスに対し、実際の値が「マイドキュメント」で始まる場合は、Documents配下以外の作業フォルダーで確認してください。
ビルドで使用する環境変数 を参照してください。
ビルドに使用されるバッチファイル を参照してください。
ビルド時に git の commit hash を githash.h に出力します。これによりバイナリが commit hash から特定できますが、バイナリが変化しないリファクタリングでもバイナリが異なってしまいます。
検証を容易にするため、環境変数 SKIP_CREATE_GITHASH を 1 に設定することで commit hash の更新をスキップできます。
注意: githash.h が存在しない場合は、この環境変数に関係なく生成されます。
実行例:
set SKIP_CREATE_GITHASH=1
build-sln.bat Win32 Release
build-sln.bat Win32 Debug
build-sln.bat x64 Release
build-sln.bat x64 Debug通常、7z.exe が利用可能な場合は自動的に使用されます(高速)。デバッグ目的で PowerShellスクリプト を強制的に使用する場合:
set FORCE_POWERSHELL_ZIP=1
build-sln.bat Win32 Releaseドキュメント修正など、ビルドが不要な変更の場合、コミットメッセージに [ci skip] または [skip ci] を含めることでCIビルドをスキップできます。
注意: PRマージ時は実行されます。
参考:
- https://qiita.com/vmmhypervisor/items/f10c77a375c2a663b300
- https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/
警告: 生成されるバイナリは正しく動作しません。
MinGW w64のインストール を完了後、以下の方法でビルドできます。
MINGW64コンソールで以下を実行。
cmake -S . -B build/MinGW -DCMAKE_BUILD_TYPE=Debug -DBUILD_PLATFORM=MinGW
cmake --build build/MinGW
ctest --test-dir build/MinGW --output-on-failureまたは、コマンドプロンプトで以下を実行。
build-gnu.bat MinGW Debug
build-gnu.bat MinGW Release-
PowerShell管理者コンソールを開く:
- Windowsタスクバーの検索窓に
powershellと入力 Windows PowerShellを右クリックして「管理者として実行」
- Windowsタスクバーの検索窓に
-
以下のコマンドを実行:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
-
インストール確認:
choco
詳細: Chocolatey公式サイト
Chocolatey をインストール後、PowerShell管理者コンソールで実行:
choco install msys2 --params "/InstallDir:C:\msys64"C:\msys64\msys2.exe を実行します。
- Chocolatey をインストール
- Msys2 をインストール
- Msys2コンソール を開く
- pacmanパッケージを最新化:
pacman -Syuu
- MinGW-w64をインストール:
pacman -S --noconfirm mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-make mingw-w64-x86_64-7zip