- (オプション) 7Zip (外部依存ファイルの解凍に使用)
- Community または Professional エディション以上の Visual Studio 2017 または Visual Studio 2019
- Windows 10 SDK のインストールも必要です。
- HTML ヘルプコンパイラ (hhc.exe)
- Visual Studio のインストールにて以下のオプションを有効にすることにより導入されます。
- 「C++ によるデスクトップ開発」を有効にする
- 右のペインで 「C++ によるデスクトップ開発」を選ぶ
- Visual Studio 2017 の場合は「x86用とx64用のVisual C++ MFC」を、Visual Studio 2019 の場合は「最新 v142 ビルド ツールの C++ MFC (x86 & x64)」をチェックする
- 変更を確定する
- VSインストール後でもVisual Studio Installerを起動して導入可能です。
- .vsconfig を使用してインストールした場合は自動的にインストールされます。
- ヘルプファイルを編集する場合 HTML Help Workshop 等の編集ソフトも別途必要になります。
- Visual Studio のインストールにて以下のオプションを有効にすることにより導入されます。
インストーラビルドの仕組みは こちら を参照
- Inno Setup の以下のいずれかのバージョンです。
- innosetup-5.5.9-unicode.exe (appveyor でのビルドではこちらが使われます。)
- innosetup-5.6.1-unicode.exe
- Python の 2.7 系、3.x 系のどちらでも OK (のはず)
Visual Studio で sakura.sln
をダブルクリックして開いてビルドします。
build-sln.bat <Platform> <Configuration>
build-sln.bat x64 Release
build-all.bat <Platform> <Configuration>
build-all.bat Win32 Release
set ARG_VSVERSION=16
build-all.bat Win32 Release
参考
こちら で ARG_VSVERSION
に関して説明しています。
AppVeyor では、 build-all.bat を使用してビルドを行っています。 ビルドに使用されるバッチファイルについては build-batchfiles.md を参照してください。
こちら で Azure Pipelines 上でのビルドの仕組みを説明しています。
こちら でビルドの仕組みを説明しています。
sakura editor ではビルド時に git の commit hash 等の情報を githash.h というファイルに出力します。 ビルド時に commit hash 等を生成することでビルド済みのバイナリがどの commit hash を元にビルドされたか 簡単に判断できて便利なのですが、
バイナリが変化しないリファクタリングをしたときでも、commit hash 等の変更が原因でバイナリ一致しなくなります。 これだと検証が面倒になるので、ローカルビルドで githash.h が変化しない手段を提供します。
コマンドラインで環境変数 SKIP_CREATE_GITHASH
を 1 に設定することにより commit hash の
更新処理をスキップすることができます。githash.h が存在しない場合には、この環境変数が設定されていても
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
へのパスが通っている場合または C:\Program Files\7-Zip\7z.exe
が存在している場合は
7z.exe
を、ZIP ファイルの解凍、圧縮、内容確認に使用します。
上記以外の場合は powershell によるスクリプト により処理を行います。
7z.exe
のほうがはるかに処理速度が速いので 7z.exe
が利用可能なら powershell によるスクリプト を
使う理由は殆どないのですが、デバッグ目的で強制的に powershell によるスクリプト を使用する手段を
提供します。
コマンドラインでビルドするときに事前に FORCE_POWERSHELL_ZIP を 1 に設定することにより 強制的に powershell によるスクリプト を使用します。
コマンド実行例
set FORCE_POWERSHELL_ZIP=1
build-sln.bat Win32 Release
build-sln.bat Win32 Debug
build-sln.bat x64 Release
build-sln.bat x64 Debug
ビルドに関係ない修正 (ドキュメントの修正など) を行った場合に、
コミットメッセージの中に [ci skip]
または [skip ci]
というキーワードを含めることで、 CI ビルドを行わないようにすることができます。
ただし PR をマージするときは実行されます。
- https://qiita.com/vmmhypervisor/items/f10c77a375c2a663b300
- https://www.appveyor.com/docs/how-to/filtering-commits/#skip-directive-in-commit-message
- https://docs.microsoft.com/ja-jp/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#skipping-ci-for-individual-commits
- https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/
生成されるバイナリは正しく動作しないが、MinGWでのビルドも可能。
MinGW64のビルド環境
cpu | thread モデル | 例外モデル | コメント |
---|---|---|---|
x86_64 | win32 | seh | windows向け。外部DLL不要 |
x86_64 | posix | seh | 標準。pthreadのDLLが必要 |
x86_64 | win32 | sjlj | 外部DLL不要 |
x86_64 | posix | sjlj | pthreadのDLLが必要 |
標準的なMinGWセットアップでビルドしたバイナリは libwinpthread-1.dll
に依存することに注意。
コマンド実行例
path=C:\msys64\mingw64\bin;%path%
mingw32-make -C sakura_core -j4