Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F630111
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
11 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" -->
<
p
><
a
href
=
"https://soramimi.github.io/Guitar/"
>
Home
</
a
></
p
>
<
h1
>
Guitarをビルドする
</
h1
>
<
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のいずれでもほとんど同じです。
</
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
>
<
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
>
<
h2
>
ビルドの準備
</
h2
>
<
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 を開きます。 libgit2.pro というのは後述しますが、とりあえず関係ありません。
</
p
>
<
p
><
img
src
=
"openproject.png"
width
=
"852"
height
=
"434"
></
p
>
<
h3
>
ビルド
</
h3
>
<
p
>
Qt Creator の左にある三角ボタンを押すか、Ctrl+R(実行)を押すと、ビルドと実行が行われます。ビルドだけして、実行したくない場合は、Ctrl+Bを押します。デバッガ上で実行するには、デバッグ開始ボタンかF5キーを押します。
</
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
>
<
h2
>
libgit2対応
</
h2
>
<
p
>
アプリケーションとリンクして利用するための
<
a
href
=
"https://libgit2.github.com/"
>
libgit2
</
a
>
というライブラリがあります。これを使ってみようと挑戦しましたが、libgit2でfetch/push/pullなどの通信を行う処理を実装する方法が分からず、挫折しました。一応プロジェクトファイル libgit2.pro は作ってありますので、ライブラリをビルドするだけなら可能です。
</
p
>
<
p
>
作業用フォルダ(例 C:\develop\)に移動します。
</
p
>
<
pre
>
C:\
>
cd C:\develop
</
pre
>
<
p
>
クローンします。
</
p
>
<
pre
>
C:\develop
>
git clone https://github.com/libgit2/libgit2.git
</
pre
>
<
p
>
Qt Creator から libgit2.pro を開きます。
</
p
>
<
p
>
ビルドディレクトリは、Windowsの場合 C:\develop\_build_libgit2 とします。
</
p
>
<
p
><
img
src
=
"libgit2build.png"
width
=
"363"
height
=
"181"
class
=
"border"
></
p
>
<
p
>
Ctrl+Bを押してビルドします。必要に応じて [デバッグ] と [リリース] を両方ビルドします。
</
p
>
<
p
>
この時点で、下記のようなフォルダ構成になっているものと想定します。
</
p
>
<
h4
>
Windowsの場合
</
h4
>
<
ul
class
=
"foldertree"
>
<
li
class
=
"folder"
>
C:\develop
<
ul
>
<
li
class
=
"folder"
>
_build_Guitar
<
ul
>
<
li
class
=
"folder"
>
debug
</
li
>
<
li
class
=
"folder"
>
release
</
li
>
</
ul
>
</
li
>
<
li
class
=
"folder"
>
_build_libgit2
<
ul
>
<
li
class
=
"folder"
>
debug
</
li
>
<
li
class
=
"folder"
>
release
</
li
>
</
ul
>
</
li
>
<
li
class
=
"folder"
>
Guitar
</
li
>
<
li
class
=
"folder"
>
libgit2
</
li
>
</
ul
>
</
li
>
</
ul
>
<
h4
>
Linuxの場合
</
h4
>
<
ul
class
=
"foldertree"
>
<
li
class
=
"folder"
>
/home/
<
<
em
>
username
>
</
em
>
/develop
<
ul
>
<
li
class
=
"folder"
>
_build_Guitar_Debug
</
li
>
<
li
class
=
"folder"
>
_build_Guitar_Release
</
li
>
<
li
class
=
"folder"
>
_build_libgit2_Debug
</
li
>
<
li
class
=
"folder"
>
_build_libgit2_Release
</
li
>
<
li
class
=
"folder"
>
Guitar
</
li
>
<
li
class
=
"folder"
>
libgit2
</
li
>
</
ul
>
</
li
>
</
ul
>
<
p
>
Guitar.pro を開くと、libgit2をリンクする設定がコメントアウトされています。
</
p
>
<
pre
>
#INCLUDEPATH += $$PWD/../libgit2/include
#win32:Debug:LIBS += $$PWD/../_build_libgit2/debug/libgit2.lib
#win32:Release:LIBS += $$PWD/../_build_libgit2/release/libgit2.lib
#unix:debug:LIBS += $$PWD/../_build_libgit2_Debug/liblibgit2.a
#unix:release:LIBS += $$PWD/../_build_libgit2_Release/liblibgit2.a
</
pre
>
<
p
>
これらのコメントを外して、[ビルド]→[qmake の実行]を行います。
</
p
>
<
p
>
Git.h を開き、USE_LIBGIT2 の定義を 1 にすると、libgit2対応に関するソースがコンパイルされるようになります。
</
p
>
<
p
><
img
src
=
"uselibgit2.png"
width
=
"870"
height
=
"523"
></
p
>
<
p
>
途中まで作って挫折したソースは LibGit2.cpp/hです。これらを Git.cpp の中から呼び出していますが、条件コンパイルで無効にしています。
</
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, 8:40 AM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
152204
Default Alt Text
build.html (11 KB)
Attached To
Mode
R77 Guitar
Attached
Detach File
Event Timeline