Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F628762
build.html
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
Unknown
Size
14 KB
Referenced Files
None
Subscribers
None
build.html
View Options
<!DOCTYPE html>
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
xml:lang
=
"ja"
lang
=
"ja"
>
<!-- InstanceBegin template="/Templates/soramimi.dwt" codeOutsideHTMLIsLocked="true" -->
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/>
<
link
rel
=
"stylesheet"
href
=
"style/style.css"
type
=
"text/css"
/>
<!-- #BeginEditable "doctitle" -->
<
title
>
How to build the Guitar
</
title
>
<
link
rel
=
"stylesheet"
href
=
"style/style.css"
>
<!-- #EndEditable -->
</
head
>
<
body
bgcolor
=
"#f0f0f0"
background
=
"style/bg.gif"
>
<
div
id
=
"body"
>
<
div
id
=
"header"
>
<
div
style
=
"float: left"
><
a
href
=
"https://soramimi.github.io/Guitar/"
><
img
src
=
"banner.png"
width
=
"443"
height
=
"48"
alt
=
"Guitar - the graphical git client"
></
a
></
div
>
<
div
style
=
"text-align: right;"
>
under development
</
div
>
<
div
style
=
"clear: both;"
></
div
>
</
div
>
<!-- #BeginEditable "content" -->
<
h1
>
Guitarをビルドする
</
h1
>
<
ul
>
<
li
><
a
href
=
"build-en.html"
>
How to build the Guitar (en) (draft)
</
a
></
li
>
</
ul
>
<
p
>
開発言語はC++、GUIフレームワークは Qt 5 を使用しています。
</
p
>
<
p
>
最初にコンパイラを準備します。
</
p
>
<
h4
>
Windows
</
h4
>
<
ul
>
<
li
>
Microsoft Visual C++ 2013 以降
<
ul
>
<
li
>
無料のExpress版も使用可能です。その場合、「for Windows Desktop」と書かれているものをインストールします。
</
li
>
</
ul
>
</
li
>
</
ul
>
<
h4
>
macOS
</
h4
>
<
ul
>
<
li
>
Xcode
</
li
>
</
ul
>
<
h4
>
Linux
</
h4
>
<
ul
>
<
li
>
GCC
</
li
>
</
ul
>
<
p
><
a
href
=
"https://www.qt.io/download-open-source/#section-2"
>
Qtのダウンロードサイト
</
a
>
からお使いのOSに合ったQt SDKをダウンロードし、インストールします。
</
p
>
<
h2
>
とりあえず
</
h2
>
<
p
>
Qtが初めての方の向けに、基本的な使い方を紹介します。Windows、macOS、Linuxのいずれでもほとんど同じです。Qt使用経験のある方は、この節は読み飛ばして結構です。
</
p
>
<
p
>
Qt Creator を起動します。
</
p
>
<
p
><
a
href
=
"qtcreator.png"
><
img
src
=
"qtcreator.png"
width
=
"540"
height
=
"342"
></
a
></
p
>
<
p
>
[新しいプロジェクト] ボタンを押し、 [Qt ウィジェットアプリケーション] を選択します。
</
p
>
<
p
><
a
href
=
"newproject.png"
><
img
src
=
"newproject.png"
width
=
"448"
height
=
"279"
border
=
"0"
></
a
></
p
>
<
p
>
[名前]の欄に“Test”、[パス]には、作業用フォルダの場所を入力します。
</
p
>
<
p
><
a
href
=
"qtwidgetapp.png"
><
img
src
=
"qtwidgetapp.png"
width
=
"467"
height
=
"234"
></
a
></
p
>
<
p
>
筆者の場合、都合により、複数のキットを使い分けていますが、初めての場合は、一つだけ表示されていると思います。使用するキットのチェックボックスをONにして、右上の [詳細] をクリックします。 [プロファイル] は必要ないので、チェックボックスをOFFにします。(ONのままでも実害はないので、そのままでもいいです)
</
p
>
<
p
><
a
href
=
"selectkit.png"
><
img
src
=
"selectkit.png"
width
=
"468"
height
=
"247"
></
a
></
p
>
<
p
>
生成されるクラス名を確認します。ここの設定はそのままで、次へ進みます。
</
p
>
<
p
><
a
href
=
"classinfo.png"
><
img
src
=
"classinfo.png"
width
=
"468"
height
=
"234"
></
a
></
p
>
<
p
>
プロジェクト作成の最終確認です。問題なければ [完了] ボタンを押します。
</
p
>
<
p
><
a
href
=
"final.png"
><
img
src
=
"final.png"
width
=
"468"
height
=
"234"
></
a
></
p
>
<
p
>
左下の三角ボタンを押すと、ビルドが開始し、成功したらプログラムが実行されます。
</
p
>
<
p
><
a
href
=
"firstapp.png"
><
img
src
=
"firstapp.png"
width
=
"541"
height
=
"342"
></
a
></
p
>
<
p
>
最初のアプリケーションが完成しました。
</
p
>
<
p
><
img
src
=
"blankapp.png"
width
=
"416"
height
=
"338"
></
p
>
<
h2
>
環境設定
</
h2
>
<
p
>
Qt Creator の設定を行います。[ツール] → [オプション] を選択すると、オプションダイアログが開きます。
</
p
>
<
p
><
a
href
=
"projectsettings1.png"
><
img
src
=
"projectsettings1.png"
width
=
"522"
height
=
"353"
></
a
></
p
>
<
p
>
デフォルト設定では、ファイル名は「lowercase」な名前になりますが、Guitarでは「UpperCamelCase」なファイル名を採用していますので、[ファイル名を小文字にする] というチェックボックスをOFFにします。
</
p
>
<
p
><
a
href
=
"projectsettings2.png"
><
img
src
=
"projectsettings2.png"
width
=
"522"
height
=
"353"
></
a
></
p
>
<
p
>
[ビルドと実行] の [一般] タブにある、 [既定のビルドディレクトリ] の設定を変更します。
</
p
>
<
p
>
Windowsの場合“../_build_%{CurrentProject:Name}”にします。これはグローバルの設定なので、変えたくない場合は、後でプロジェクトの設定で“../_build_Guitar”などにします。
</
p
>
<
p
><
a
href
=
"projectsettings3.png"
><
img
src
=
"projectsettings3.png"
width
=
"522"
height
=
"353"
></
a
></
p
>
<
p
>
LinuxやmacOSの場合、ビルドディレクトリは 「../_build_%{CurrentProject:Name}_%{CurrentBuild:Name}」がおすすめです。そのような設定にすると /home/
<
em
>
<
username
>
</
em
>
/develop/_build_Guitar_Release|Debug の様になります。
</
p
>
<
p
><
img
src
=
"projectsettings4.png"
width
=
"605"
height
=
"376"
></
p
>
<
p
>
一応、次のようなコーディングスタイルを採用しています。
</
p
>
<
ul
>
<
li
>
ハードタブ(半角4文字幅推奨)
</
li
>
</
ul
>
<
p
>
上に挙げたのは、グローバルの共通設定ですが、プロジェクト毎にも設定箇所があります。
</
p
>
<
p
><
img
src
=
"projectsettings5.png"
width
=
"540"
height
=
"342"
></
p
>
<
p
>
[エディタ]の設定、[コードスタイル]の設定を確認します。
</
p
>
<
h2
>
ソースコードを取得する
</
h2
>
<
p
>
作業用フォルダを作成します。各自好みの場所で構いません。筆者の場合、Windowsでは C:\develop 、Linuxでは /home/soramimi/develop としています。
</
p
>
<
h3
>
Guitar
</
h3
>
<
p
><
img
src
=
"github.png"
width
=
"20"
height
=
"16"
alt
=
"guthub"
><
a
href
=
"https://github.com/soramimi/Guitar"
>
https://github.com/soramimi/Guitar
</
a
>
にアクセスします。
</
p
>
<
p
><
img
src
=
"repo.png"
width
=
"995"
height
=
"168"
class
=
"border"
></
p
>
<
p
>
右にある[Clone or download]を押すと、ソースコードを取得するためのアドレスが表示されます。
</
p
>
<
p
>
HTTPSを使用する場合
</
p
>
<
pre
>
C:\develop
>
git clone https://github.com/soramimi/Guitar.git
</
pre
>
<
p
>
SSHを使用する場合
</
p
>
<
pre
>
C:\develop
>
git clone git@github.com:soramimi/Guitar.git
</
pre
>
<
p
>
クローンしたフォルダに 2個のプロジェクトファイル(*.pro)があるのを確認しておきます。
</
p
>
<
p
><
img
src
=
"openproject.png"
width
=
"800"
height
=
"512"
></
p
>
<
h2
>
依存ライブラリ
</
h2
>
<
h3
>
zlib
</
h3
>
<
p
>
圧縮されたファイルの伸張処理でzlibを使用します。Qtアプリからzlibを利用するためには以下のような方法があります。
</
p
>
<
ul
>
<
li
>
Qt SDK に同梱されているzlib
</
li
>
<
li
>
OSにインストールされているzlib
</
li
>
<
li
>
公式配布されているzlib
</
li
>
<
li
>
GitHubで公開されているzlib
</
li
>
</
ul
>
<
p
>
どのzlibを利用するかによって、Guitarのクローンフォルダにあるmyzlib.hを書き換えます。
</
p
>
<
h4
>
Qt SDK に同梱されているzlib
</
h4
>
<
p
>
一応、最も推奨されている(ことになっているらしい)方法ですが、うまくいかない事例が報告されています。
</
p
>
<
pre
>
#include
<
QtZlib/zlib.h
>
</
pre
>
<
p
>
Qt SDKのインストールのしかたによって QtZlib/zlib.h があったりなかったりします。ファイルが見つからないなどのエラーが出る場合は別の方法を試してみます。
</
p
>
<
h4
>
OSにインストールされているzlib
</
h4
>
<
p
>
Linuxなどでは、ほぼ間違いなくzlibはインストールされています。ただし、開発用パッケージは入っていないかもしれません。Debian系では、以下のようにしてインストールします。
</
p
>
<
pre
>
$
sudo apt-get install zlib1g-dev
</
pre
>
<
p
>
ヘッダファイルは次のようにします。
</
p
>
<
pre
>
#include
<
zlib.h
>
</
pre
>
<
p
>
この方法では、Guitarのプロジェクトファイル(Guitar.pro)で、明示的に libz.so をリンクするように指定する必要があります。
</
p
>
<
pre
>
unix:LIBS += -lz
</
pre
>
<
h4
>
公式配布されているzlib
</
h4
>
<
p
>
ヘッダファイルは次のようになります。
</
p
>
<
pre
>
#include
"
../zlib-1.2.11/zlib.h
"
</
pre
>
<
p
>
ライブラリを自前ビルドする必要があり、面倒なので、この方法はおすすめしません。
</
p
>
<
h4
>
GitHubで公開されているzlib
</
h4
>
<
p
>
zlibをクローンします。
</
p
>
<
pre
>
C:\develop
>
git clone https://github.com/madler/zlib.git
</
pre
>
<
p
>
Guitarとzlibを同じ階層に配置します。
</
p
>
<
ul
class
=
"foldertree"
>
<
li
class
=
"folder"
>
C:\develop
<
ul
>
<
li
class
=
"folder"
>
Guitar
</
li
>
<
li
class
=
"folder"
>
zlib
</
li
>
</
ul
>
</
li
>
</
ul
>
<
p
>
Guitarをクローンしたフォルダに zlib.pro がありますので、これを Qt Creator で開きます。そして、[デバッグ]版と[リリース]版をビルドします。
</
p
>
<
p
>
zlibは(特にUnix系の場合)OSにインストール済みのはずなので、zlibの自前ビルドは明らかに無駄なのですが、この方法が file not found などのエラーが発生しにくいので、マルチプラットフォームの移植性の観点から、一応この手順をGuitarにおける推奨ということにしています。
</
p
>
<
h3
>
OpenSSL
</
h3
>
<
p
>
ウェブサイトにhttpsでアクセスするため、ソケットとOpenSSLを使用しています。
</
p
>
<
h4
>
Windows
</
h4
>
<
p
><
a
href
=
"https://www.openssl.org/source/"
>
https://www.openssl.org/source/
</
a
>
からOpenSSLをダウンロードします。1.1系には対応していません。1.0系の最新版を使用してください。本稿執筆時点(2017-03-09)での最新版は
<
a
href
=
"https://www.openssl.org/source/openssl-1.0.2k.tar.gz"
>
openssl-1.0.2k.tar.gz
</
a
>
です。ビルド方法は INSTALL.W32 を参照してください。GuitarではOpenSSLが C:\openssl にインストールされている想定でプロジェクトファイルを記述していますので、ビルド前のConfigureスクリプトの実行で、インストール先を指定する必要があります。OpenSSLのビルドにはperlが必要です。ない場合は
<
a
href
=
"http://www.activestate.com/activeperl"
>
ActivePerl
</
a
>
などをインストールします。
</
p
>
<
pre
>
>
perl Configure VC-WIN32 --prefix=c:\openssl
</
pre
>
<
p
>
もし他の場所にインストールした場合、Guitar.proを修正する必要があります。
</
p
>
<
pre
>
win32:INCLUDEPATH += C:\openssl\include
win32:LIBS += -LC:\openssl\lib
</
pre
>
<
p
>
ビルドが完了したOpenSSLの中で、必要なファイルは libeay32.dll と ssleay32.dll です。 C:\openssl\bin にあります。あとで Guitar のビルドが完了したら、ビルド先フォルダにこれらのファイルをコピーする必要があります。
</
p
>
<
h4
>
Linux
</
h4
>
<
p
>
Debian系のLinuxの場合 libssl-dev をインストールしておきます。
</
p
>
<
pre
>
$
sudo apt-get install libssl-dev
</
pre
>
<
blockquote
>
<
p
>
※他のLinuxでのインストール方法は確認していません。各自お調べください
</
p
>
</
blockquote
>
<
p
>
リンカのオプションに -lssl -lcrypto が必要です。(Guitar.proにはそのように記述しています)
</
p
>
<
h4
>
macOS
</
h4
>
<
p
>
最近のmacOSでは標準でOpenSSLが入らなくなったようです。共有ライブラリの読み込みパス解決の問題への対応が面倒なので、自前ビルドしてスタティックリンクしています。1.1系は未対応なので、1.0系の最新版をチェックアウトします。
</
p
>
<
pre
>
$
git clone https://github.com/openssl/openssl.git
$
cd openssl
$
git checkout -b OpenSSL_1_0_2-stable origin/OpenSSL_1_0_2-stable
$
./Configure darwin64-x86_64-cc --prefix=/usr/local
$
make -j4
$
sudo make install
</
pre
>
<
h2
>
ビルドの準備
</
h2
>
<
h4
>
prepare.rb
</
h4
>
<
p
>
バージョン情報やリソーススクリプトを自動生成するための prepare.rb というスクリプトファイルがあります。Qt Creator でプログラム本体をビルドする前に、このスクリプトを実行しておく必要があります。実行にはRubyが必要です。
</
p
>
<
pre
>
C:\develop\Guitar
>
ruby prepare.rb
</
pre
>
<
p
>
以下のファイルが作成されます。
</
p
>
<
ul
>
<
li
>
version.c … バージョン情報ダイアログボックスで表示する値を定義します
</
li
>
<
li
>
win.rc … Windows用アプリのリソースを定義します
</
li
>
<
li
>
Info.plist … macOS用アプリの共通設定を定義します
</
li
>
</
ul
>
<
h2
>
プロジェクトを開く
</
h2
>
<
p
>
Qt Creator の「ようこそ」の画面で、右上の[プロジェクトを開く]ボタンを押します。
</
p
>
<
p
>
クローンした場所に、 Guitar.pro があります。
</
p
>
<
h3
>
Guitarのビルド
</
h3
>
<
p
>
Guitar.pro を開き、 Qt Creator の左にある三角ボタンを押すか、Ctrl+R(実行)を押すと、ビルドと実行が行われます。ビルドだけして、実行したくない場合は、Ctrl+Bを押します。デバッガ上で実行するには、デバッグ開始ボタンかF5キーを押します。
</
p
>
<
h4
>
Windowsの場合
</
h4
>
<
p
>
OpenSSLの libeay32.dll と ssleay32.dll を、Guitar.exe と同じフォルダにコピーしておく必要があります。これを忘れた場合 Guitar.exe が実行できずに即座に終了します。
</
p
>
<
h4
>
失敗する場合
</
h4
>
<
p
>
よくあるのが、prepare.rbを実行し忘れて、 version.c が見つからないというエラーです。前述した「ビルドの準備」の操作を行うと version.c が作成されます。自動では行われないので、手作業でやる必要があります。
</
p
>
<
h4
>
追加したソースがコンパイルされないとき
</
h4
>
<
p
>
version.c を生成した場合もそうですが、リポジトリから pull したら新しいファイルが追加されていたときや、新しいクラス(のファイル)を追加したとき、そのままビルドすると、増えたファイルがコンパイルされずに、いろいろ見つからないというエラーが出ることがあります。そんなときは、Qt Creator の [ビルド]→[qmake の実行] を行ってください。追加したファイルがビルドされない問題は、大抵これで解消されます。
</
p
>
<
p
><
img
src
=
"qmake.png"
alt
=
"qmakeの実行"
width
=
"365"
height
=
"152"
class
=
"border"
></
p
>
<!-- #EndEditable -->
<
div
id
=
"footer"
>
<
span
id
=
"copyright"
></
span
>
</
div
>
</
body
>
<
script
type
=
"text/javascript"
src
=
"common.js"
></
script
>
<!-- InstanceEnd -->
</
html
>
File Metadata
Details
Attached
Mime Type
text/html
Expires
Sun, Nov 15, 4:57 AM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
121899
Default Alt Text
build.html (14 KB)
Attached To
Mode
R77 Guitar
Attached
Detach File
Event Timeline