Skip to content

Latest commit

 

History

History
213 lines (146 loc) · 9.09 KB

build.md

File metadata and controls

213 lines (146 loc) · 9.09 KB

ビルド方法

必要なもの

実行ファイルのビルドに必要なもの

  • (オプション) 7Zip (外部依存ファイルの解凍に使用)
  • Community または Professional エディション以上の Visual Studio 2017 または Visual Studio 2019
    • Windows 10 SDK のインストールも必要です。

HTML ヘルプのビルドに必要なもの

  • 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を起動して導入可能です。 vsi
    • .vsconfig を使用してインストールした場合は自動的にインストールされます。
    • ヘルプファイルを編集する場合 HTML Help Workshop 等の編集ソフトも別途必要になります。

インストーラのビルドに必要なもの

インストーラビルドの仕組みは こちら を参照

(オプション) ログの解析等に必要なもの

  • Python の 2.7 系、3.x 系のどちらでも OK (のはず)

ビルド方法

実行ファイルだけをビルドする場合

方法1 (GUI)

Visual Studio で sakura.sln をダブルクリックして開いてビルドします。

方法2 (コマンドライン)

build-sln.bat <Platform> <Configuration>
具体例 (x64 の Release)
build-sln.bat x64 Release

すべてビルドする場合

build-all.bat <Platform> <Configuration>
具体例 (Win32 の Release)
build-all.bat Win32 Release

Visual Studio 2019 を使用してコマンドラインでビルド

set ARG_VSVERSION=16
build-all.bat Win32 Release

参考

こちらARG_VSVERSION に関して説明しています。

ビルドの仕組み

appveyor でのビルドの仕組み

AppVeyor では、 build-all.bat を使用してビルドを行っています。 ビルドに使用されるバッチファイルについては build-batchfiles.md を参照してください。

Azure Pipelines でのビルドの仕組み

こちらAzure Pipelines 上でのビルドの仕組みを説明しています。

インストーラの仕組み

こちら でビルドの仕組みを説明しています。

開発者向けの情報

githash.h の更新のスキップ

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

Powershell によるZIPファイルの圧縮、解凍、内容確認の強制

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 でのビルドをスキップする方法

ビルドに関係ない修正 (ドキュメントの修正など) を行った場合に、 コミットメッセージの中に [ci skip] または [skip ci] というキーワードを含めることで、 CI ビルドを行わないようにすることができます。
ただし PR をマージするときは実行されます。

参考情報

MinGW w64 ビルド

生成されるバイナリは正しく動作しないが、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