Skip to content

Latest commit

 

History

History
200 lines (137 loc) · 7.84 KB

build.md

File metadata and controls

200 lines (137 loc) · 7.84 KB

ビルド方法

必要なもの

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

  • (オプション) 7Zip (外部依存ファイルの解凍に使用)
  • Visual Studio 2017 Comminity Edition 以下オプションも必要です。
    • Windows XP Support for C++
    • Windows 8.1 SDK と UCRT SDK
    • C++ に関する Windows XP サポート

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

  • HTML ヘルプコンパイラ (hhc.exe)
    • Visual Studio 2017 のインストールにて以下のオプションを有効にすることにより導入されます。
      • 「C++ によるデスクトップ開発」を有効にする
      • 右のペインで 「C++ によるデスクトップ開発」を選ぶ
      • 「x86用とx64用のVisual C++ MFC」をチェックする
      • 変更を確定する
    • VSインストール後でもVisual Studio Installerを起動して導入可能です。 vsi
    • ヘルプファイルを編集する場合 HTML Help Workshop 等の編集ソフトも別途必要になります。

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

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

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

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

ビルド方法

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

方法1 (GUI)

Visual Studio Community 2017 で 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 上でのビルドの仕組みを説明しています。

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

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 githash.h Funccode_enum.h Funccode_define.h
mingw32-make -C sakura_core -j4