SlideShare a Scribd company logo
わんくま同盟 名古屋勉強会 #34
QtでC++開発環境構築
2015/02/14(土) You&I
わんくま同盟 名古屋勉強会 #34
ジコ、ショウカイ。
• H/N: You&I(読み:ユーアンドアイ)
• SNS: @you_and_i
• 出身: 生まれも育ちも名古屋市
• 年齢: 30代中盤
• 本職: 商学部出身の職業プログラマ
• 言語: C++, C#他
• 所属: プロ生勉強会 名古屋支部
名古屋アジャイル勉強会
わんくま同盟 名古屋勉強会
わんくま同盟 名古屋勉強会 #34
AGENDA
1. Qtについて
2. Qtの環境構築
3. QtCreatorの使い方
4. Qtで開発
わんくま同盟 名古屋勉強会 #34
1. Qtについて
QtでC++開発環境構築
わんくま同盟 名古屋勉強会 #34
1. Qtについて (1/4)
• http://qt-project.org
• 「キュート」って発音する
• アプリケーションやGUIの開発フレーム
ワーク・ライブラリ
• 特徴
1. C++クラスライブラリ
2. クロスプラットフォーム対応
3. 統合開発環境が含まれている
4. 商用・OSSのデュアルライセンス
わんくま同盟 名古屋勉強会 #34
1. Qtについて (2/4)
• Qtの歴史(1/2)
– 1991年にノルウェーのQuasar Technologies社が
開発を開始
– 1994年にTrolltech社に社名変更
– 2008年6月にフィンランドのNokia社がTrolltech
社を買収
– 2011年3月にフィンランドのDigia社がNokiaの
Qtの商用ライセンス事業とサービス事業を買
収
– 2011年10月にQt ProjectとしてOSSプロジェク
ト化。
わんくま同盟 名古屋勉強会 #34
1. Qtについて (3/4)
• Qtの歴史(2/2)
リリース バージョン 備考
1996年 Qt 1.0 X11版及びWindows版
1999年 Qt 2.0 X11版がOSS化
2001年 Qt 3.0 MacOS X版
2005年 Qt 4.0 GPL 2.0(及びそれ以降)ライセンス追加
2007年 Qt 4.5 LGPL 2.1ライセンス追加
2010年 Qt 4.7 Qt/QML, Qt Quickが追加
2012年 Qt 5.0 内部構造一新
2013年 Qt 5.1 Android版, iOS版(共にPreview)が追加
2013年 Qt 5.2 Android版, iOS版がstableに、Desktop周り強化
2014年 Qt 5.3 Windows Runtime対応がstableに
2014年 Qt 5.4 eLinux, eAndroid対応、Web周り強化
わんくま同盟 名古屋勉強会 #34
1. Qtについて (4/4)
• Qtの開発環境
– http://qt-project.org/downloads
– 下記環境以外はソースコードからビルドする
か、パッケージ管理からインストール。
– バイナリ提供
• Microsoft Windows(VisualStudio, MinGW)
• Apple OS X
• Ubuntu Linux
– RHELなどにもインストールは可能。
わんくま同盟 名古屋勉強会 #34
2. Qtの環境構築
QtでC++開発環境構築
わんくま同盟 名古屋勉強会 #34
2. Qtの環境構築 (1/6)
• 先程Qtはクロスプラットフォーム開発環境
であると紹介しましたが、それを体験でき
る環境を構築したいと思います。
• 今回は、以下の条件で環境を構築します。
– Windows 8.1, x64版
– Qt 5.4 for Windows, MinGW
– MinGW-builds external-binary-packages rev13
わんくま同盟 名古屋勉強会 #34
2. Qtの環境構築 (2/6)
• Qtのインストール
– 入手先
• http://www.qt.io/download-open-source/
– Windows用のインストーラーは2種類
• オンライン
– 1つのインストーラで複数バージョンのQtのインストール
が可能
– MinGW版のインストールはQt 5.4のツリーを展開して個別
に選択する必要あり
• オフライン
– 自分が使いたいものを選んでダウンロードする
わんくま同盟 名古屋勉強会 #34
2. Qtの環境構築 (3/6)
• Qtのインストール(続き)
– Qtのフォルダ構成(Qt 5.4 + MinGW v4.9.1)
• C:¥Qt
– 5.4
» mingw491_32
» bin
» Include
» lib
– Docs
– Examples
– Licenses
– Tools
» mingw491_32
» QtCreator
わんくま同盟 名古屋勉強会 #34
2. Qtの環境構築 (4/6)
• MinGW-builds external-binary-packagesのイ
ンストール
– 何に使うの?
• まずMinGW(Minimalist GNU for Windows)は、GNU
ツールチェインをWindows OSに移植したもの。
– http://sourceforge.net/projects/mingw/
– MSYS(Minimal SYStem)とは
• Windows上において、Unix-Shell、テキスト操作ツー
ル、差分操作ツール、アーカイバーツール、
autotoolsなどの開発でよく使われるツール群を
MinGW上に移植したもの。
• external-binary-packagesにはMSYSが含まれています。
わんくま同盟 名古屋勉強会 #34
2. Qtの環境構築 (5/6)
• MinGW-builds external-binary-packagesのイ
ンストール(続き)
– 入手先
• MinGWプロジェクトとは別?のMinGW-Buildsプロ
ジェクトのサイトでバイナリ配布しているもの
• http://sourceforge.net/projects/mingwbuilds/files/exte
rnal-binary-packages/
– パッケージは7-Zip書庫での提供
• msys+7za+wget+svn+git+mercurial+cvs-rev13.7z
• これを解凍すると「msys」フォルダが入っている。
わんくま同盟 名古屋勉強会 #34
2. Qtの環境構築 (6/6)
• MinGW-builds external-binary-packagesのインス
トール(続きの続き)
– インストール
• 「msys 」フォルダを任意のフォルダに移動する。
• MSYSの自動マウント設定ファイルの「msys¥etc¥fstab」
を「fstab.sample」を参考に編集する。Qtのインストー
ルで導入されたMinGWへのパスを記入する。
– 例: C:/Qt/Tools/mingw491_32 /mingw
– MSYSの起動確認
• 「msys¥msys.bat」を実行する。
• コンソールで「gcc -v」と打ってコマンドがあれば成功
• MSYSでのWindows上のドライブ移動は「C:¥Windows」
なら「$ cd /c/windows」というようにパスを指定する
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方
QtでC++開発環境構築
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(1/10)
• WindowsのスタートメニューからQtCreator
を起動する。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(2/10)
• QtCreatorの環境設定
– メニューの[ツール] – [オプション]から設定します。
– Qtやコンパイラの環境確認
• ビルドと実行
– Qtバージョン
– コンパイラ
– その他You&Iが設定する項目
• テキストエディタ
– インデント文字、空白表示
• C++
– コードスタイル
• バージョン管理システム
– とりあえず使えるレベルのVCSクライアント機能
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(3/10)
• QtCreatorには最初からサンプルが含まれて
おり、QtCreatorから簡単に参照可能。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(4/10)
• QtCreatorでプロジェクトを開く(1/4)
– 初回時にはプロジェクト設定を行います。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(5/10)
• QtCreatorでプロジェクトを開く(2/4)
– Qtのインストール時に、MinGW以外のキット
環境(VisualC++、WinRT等)をインスト-ルして
いると、プロジェクト作成時にインスト-ル
されている全てのキット環境が有効な設定に
なってしまうので注意が必要。
– 設定は後から「プロジェクト」から変更可能
です。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(6/10)
• QtCreatorでプロジェクトを開く(3/4)
– QtCreatorで開発時のフォルダ構成
1. プロジェクト名
2. build-[プロジェクト名]-[キット名]-Debug
3. build-[プロジェクト名]-[キット名]-Release
– プロジェクトフォルダ内にはビルドオブジェ
クトなどの中間ファイルは出力されない。
– これらは後述しますが、Qtのプロジェクト管
理システム(qmake)を利用した場合です。
qmakeが出力フォルダにMakefileを生成します。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(7/10)
• QtCreatorでプロジェクトを開く(4/4)
– 今回はMinGW環境なので、コンパイラはGNU
Compiler Collecton、タスク実行はmakeコマン
ドを利用します。
– 並列ビルドを行いたい場合には、プロジェク
ト毎に「プロジェクト」にてmakeコマンドの
並列ビルドオプション(ジョブ数:-j4)を指定す
る必要があります。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(8/10)
• QtCreatorでビルド&実行
– 左下にビルドターゲット、実行、デバッグ実
行、ビルドのボタンが縦に並んでいます。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(9/10)
• QtCreatorでの開発
– QtCreatorは、Qt(qmake)を使ったプログラム開
発専用という訳ではありません。以下の形式
のプロジェクト管理ツールにも対応します。
• autotools (※プラグインの設定が必要)
• CMake
– 全くQtを使わないプログラムでもQtCreator上
で開発可能です。Makefileの管理方法は上記で
説明した通り、Qtに依存しないものも利用可
能です。
わんくま同盟 名古屋勉強会 #34
3. QtCreatorの使い方(10/10)
• QtCreatorのプラグイン設定
– メニューの[ヘルプ] – [プラグインについて]を
選択すると、プラグイン設定画面が開きます。
– 「AutotoolsProjectManager」を有効にすると、
autotoolsにも対応可能になります。
わんくま同盟 名古屋勉強会 #34
4. Qtで開発
QtでC++開発環境構築
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(1/8)
• プロジェクトのファイル構成について
– プロジェクトファイル(*.pro)
– ソースコードファイル(*.cpp, *.h, etc.)
– GUIフォームファイル(*.ui)
– リソースファイル(*.qrc)
• これらは全てテキストファイルです。
• QtCreatorからは、これらのファイルをGUI
操作可能です。
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(2/8)
• MSYS+QtCreatorのデモ
– MSYSの環境も作ったので、
• MSYSでC++のライブラリをビルドし、
• それをQtCreatorから利用してみたいと思います。
– MSYSでビルドしたバイナリは、スタティックリンクライ
ブラリのみとなります。DLLやDSOは生成されません。
– 今回は以下のデモを行います
• MSYS
– OSSのlog4cppログ出力ライブラリをビルド
• QtCreator
– MYSでビルドしたlog4cppでログ出力
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(3/8)
• フォルダ構成
– build-Log4cppSample-XXX-Debug/
– build-Log4cppSample-XXX-Release/
– Log4cppSample/
• packages/
– libs/
» include/ : MSYSからインストールされたヘッダ
» lib/ : MSYSでビルドしたバイナリ
– log4cpp/ : MSYSでのビルド環境
• Log4cppSample.pro
• main.cpp
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(4/8)
• MSYSでlog4cppをビルド
– 以下のコマンドを実行
• MinGWでlog4cppをビルドすると以下のエラーが出
ます。これはMinGW環境だけの問題のようです。
• 「log4cpp/tests/Clock.cpp」の一番上に以下の一文を
追加しましょう。
Clock.hh:17:13: error: 'int64_t' does not name a type
typedef int64_t usec_t;
#include <stdint.h>
1 $ cd project/packages
2 $ tar zxf log4cpp.tar.gz
3 $ cd log4cpp
4 $ ./configure –prefix=`pwd`/../libs
5 $ make –j4 -s
6 $ make install
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(5/8)
• QtCreatorでビルドしたlog4cppを利用する
設定
– Qtで利用するライブラリの追加は、基本的に
プロジェクトファイル(*.pro)を手動で書き換え
ます。
– プロジェクトファイル(*.pro)の仕様
• Qt 5.4 > qmake manuals > Variables
• http://doc.qt.io/qt-5/qmake-variable-reference.html
– qmakeのプロジェクトはMakefileをベースとす
るので、Makefileの知識が前提となります。
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(6/8)
• QtCreatorでビルドしたlog4cppを利用する
設定(続き)
– MSYSでビルドしたlog4cppの利用設定
• ヘッダーとライブラリのパス及びライブラリ名を
設定します
– プロジェクトファイルを変更したら、メ
ニューの[ビルド] – [qmakeの実行]を行い、
Makefileを再生成します。
• 手動でやらなくても保存時に自動で行われますけ
ども
INCLUDEPATH += $${_PRO_FILE_PWD_}/packages/libs/include
LIBS += -L$${_PRO_FILE_PWD_}/packages/libs/lib -llog4cpp
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(7/8)
• log4cppの出力
– log4cppのサンプルコードをそのまま貼り付け
ます。
• http://log4cpp.sourceforge.net
– 期待出力
• 一部ファイル(program.log)にも出力されています
1352973121 ERROR : root error
1352973121 ERROR sub1 : sub1 error
1352973121 WARN sub1 : sub1 warn
1352973121 WARN : 1 + 1 == two ?
1352973121 ERROR : Streamed root error
1352973121 ERROR sub1 : Streamed sub1 error
1352973121 WARN sub1 : Streamed sub1 warn
1352973121 ERROR : Another streamed error
わんくま同盟 名古屋勉強会 #34
4. Qtで開発(8/8)
• Qtアプリケーションの配布
– 以下のフォルダ構成&ランタイム配置にする
• SomeQt5Application.exe
• icudt53.dll
• icuin53.dll
• icuuc53.dll
• libgcc_s_dw2-1.dll
• libstdc++-6.dll
• libwinpthread-1.dll
• Qt5Core.dll
• Qt5Gui.dll
• Qt5Widgets.dll
• platforms¥
– qminimal.dll
– qoffscreen.dll
– qwindows.dll
以下のフォルダからコピー
・Qtのbinフォルダ
MinGWの実行ランタイム
Qtの実行ランタイム
・Qtのpluginsフォルダ
「platforms」フォルダ
ここで示しているのは最低限
のもので、実装内容によって、
必要になる
・Qtの実行ランタイム
・Qtのpluginsフォルダ
は変わります。

More Related Content

What's hot

Nmap 9つの真実
Nmap 9つの真実Nmap 9つの真実
Nmap 9つの真実
abend_cve_9999_0001
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
 
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Yahoo!デベロッパーネットワーク
 
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
Sho Nakazono
 
Writing Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlinWriting Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlin
賢太郎 前多
 
Notes 技術者のための はじめての XPages 講座 (XPagesDay 2015)
Notes 技術者のためのはじめての XPages 講座 (XPagesDay 2015)Notes 技術者のためのはじめての XPages 講座 (XPagesDay 2015)
Notes 技術者のための はじめての XPages 講座 (XPagesDay 2015)
Takeshi Yoshida
 
eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動
Kohei Tokunaga
 
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
Yahoo!デベロッパーネットワーク
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
Jeongkyu Shin
 
About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginners
Shota TAMURA
 
Meetup 2009
Meetup 2009Meetup 2009
Meetup 2009
HuaiEnTseng
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Kohsuke Yuasa
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
uchan_nos
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
Trainocate Japan, Ltd.
 
Git basics
Git basicsGit basics
Git basics
GHARSALLAH Mohamed
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
 
Physical Memory Management.pdf
Physical Memory Management.pdfPhysical Memory Management.pdf
Physical Memory Management.pdf
Adrian Huang
 
Click-Through Example for Flink’s KafkaConsumer Checkpointing
Click-Through Example for Flink’s KafkaConsumer CheckpointingClick-Through Example for Flink’s KafkaConsumer Checkpointing
Click-Through Example for Flink’s KafkaConsumer Checkpointing
Robert Metzger
 

What's hot (20)

Nmap 9つの真実
Nmap 9つの真実Nmap 9つの真実
Nmap 9つの真実
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
 
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
 
Writing Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlinWriting Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlin
 
Notes 技術者のための はじめての XPages 講座 (XPagesDay 2015)
Notes 技術者のためのはじめての XPages 講座 (XPagesDay 2015)Notes 技術者のためのはじめての XPages 講座 (XPagesDay 2015)
Notes 技術者のための はじめての XPages 講座 (XPagesDay 2015)
 
eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動
 
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
Linux boot-time
Linux boot-timeLinux boot-time
Linux boot-time
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginners
 
Meetup 2009
Meetup 2009Meetup 2009
Meetup 2009
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
 
Git basics
Git basicsGit basics
Git basics
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Physical Memory Management.pdf
Physical Memory Management.pdfPhysical Memory Management.pdf
Physical Memory Management.pdf
 
Click-Through Example for Flink’s KafkaConsumer Checkpointing
Click-Through Example for Flink’s KafkaConsumer CheckpointingClick-Through Example for Flink’s KafkaConsumer Checkpointing
Click-Through Example for Flink’s KafkaConsumer Checkpointing
 

Viewers also liked

QtとC++でGUIプログラミング
QtとC++でGUIプログラミングQtとC++でGUIプログラミング
QtとC++でGUIプログラミング
seanchas_t
 
qmake入門
qmake入門qmake入門
qmake入門
hermit4 Ishida
 
Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)
Kazuo Asano (@kazuo_asa)
 
プログラミングで言いたいこと聞きたいこと集
プログラミングで言いたいこと聞きたいこと集プログラミングで言いたいこと聞きたいこと集
プログラミングで言いたいこと聞きたいこと集tecopark
 
Qt Creator を拡張する
Qt Creator を拡張するQt Creator を拡張する
Qt Creator を拡張する
Takumi Asaki
 
Catchでお手軽にテストコード書いてみよう
Catchでお手軽にテストコード書いてみようCatchでお手軽にテストコード書いてみよう
Catchでお手軽にテストコード書いてみよう
You&I
 
Qt小技(修正版)
Qt小技(修正版)Qt小技(修正版)
Qt小技(修正版)
hermit4 Ishida
 
Qt + MSVC でビルドする時に Qt Creator のデバッガを使う方法
Qt + MSVC でビルドする時にQt Creator のデバッガを使う方法Qt + MSVC でビルドする時にQt Creator のデバッガを使う方法
Qt + MSVC でビルドする時に Qt Creator のデバッガを使う方法
Shinya Takebayashi
 
Fitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてFitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてtecopark
 
Qt creatorでremote_debug
Qt creatorでremote_debugQt creatorでremote_debug
Qt creatorでremote_debug
Kazuo Asano (@kazuo_asa)
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
 
画像キャプションの自動生成
画像キャプションの自動生成画像キャプションの自動生成
画像キャプションの自動生成
Yoshitaka Ushiku
 

Viewers also liked (12)

QtとC++でGUIプログラミング
QtとC++でGUIプログラミングQtとC++でGUIプログラミング
QtとC++でGUIプログラミング
 
qmake入門
qmake入門qmake入門
qmake入門
 
Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)
 
プログラミングで言いたいこと聞きたいこと集
プログラミングで言いたいこと聞きたいこと集プログラミングで言いたいこと聞きたいこと集
プログラミングで言いたいこと聞きたいこと集
 
Qt Creator を拡張する
Qt Creator を拡張するQt Creator を拡張する
Qt Creator を拡張する
 
Catchでお手軽にテストコード書いてみよう
Catchでお手軽にテストコード書いてみようCatchでお手軽にテストコード書いてみよう
Catchでお手軽にテストコード書いてみよう
 
Qt小技(修正版)
Qt小技(修正版)Qt小技(修正版)
Qt小技(修正版)
 
Qt + MSVC でビルドする時に Qt Creator のデバッガを使う方法
Qt + MSVC でビルドする時にQt Creator のデバッガを使う方法Qt + MSVC でビルドする時にQt Creator のデバッガを使う方法
Qt + MSVC でビルドする時に Qt Creator のデバッガを使う方法
 
Fitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてFitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化について
 
Qt creatorでremote_debug
Qt creatorでremote_debugQt creatorでremote_debug
Qt creatorでremote_debug
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
画像キャプションの自動生成
画像キャプションの自動生成画像キャプションの自動生成
画像キャプションの自動生成
 

Similar to QtでC++開発環境構築

初めてのDocker
初めてのDocker初めてのDocker
初めてのDocker
You&I
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
 
Team Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるTeam Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみる
You&I
 
Osc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorunOsc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorunKaoru NAKAMURA
 
C# Tokyo Guide 2020/06/26
C# Tokyo Guide 2020/06/26C# Tokyo Guide 2020/06/26
C# Tokyo Guide 2020/06/26
m ishizaki
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
You&I
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
You&I
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版
m ishizaki
 
C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03
m ishizaki
 
WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編
Hiroshi Urabe
 
プロ生ちゃんについて
プロ生ちゃんについてプロ生ちゃんについて
プロ生ちゃんについて
You&I
 
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
Kazuo Asano (@kazuo_asa)
 
C# Tokyo について 20200729
C# Tokyo について 20200729C# Tokyo について 20200729
C# Tokyo について 20200729
m ishizaki
 
C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版
m ishizaki
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
You&I
 
C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925
m ishizaki
 
C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25
m ishizaki
 
C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26
m ishizaki
 
st2でシステム管理
st2でシステム管理st2でシステム管理
st2でシステム管理
You&I
 

Similar to QtでC++開発環境構築 (20)

初めてのDocker
初めてのDocker初めてのDocker
初めてのDocker
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
Team Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるTeam Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみる
 
Osc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorunOsc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorun
 
C# Tokyo Guide 2020/06/26
C# Tokyo Guide 2020/06/26C# Tokyo Guide 2020/06/26
C# Tokyo Guide 2020/06/26
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版
 
C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03
 
WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編
 
プロ生ちゃんについて
プロ生ちゃんについてプロ生ちゃんについて
プロ生ちゃんについて
 
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
 
C# Tokyo について 20200729
C# Tokyo について 20200729C# Tokyo について 20200729
C# Tokyo について 20200729
 
C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
 
Osc2010 Slide
Osc2010 SlideOsc2010 Slide
Osc2010 Slide
 
C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925
 
C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25
 
C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26
 
st2でシステム管理
st2でシステム管理st2でシステム管理
st2でシステム管理
 

Recently uploaded

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (16)

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

QtでC++開発環境構築

  • 2. わんくま同盟 名古屋勉強会 #34 ジコ、ショウカイ。 • H/N: You&I(読み:ユーアンドアイ) • SNS: @you_and_i • 出身: 生まれも育ちも名古屋市 • 年齢: 30代中盤 • 本職: 商学部出身の職業プログラマ • 言語: C++, C#他 • 所属: プロ生勉強会 名古屋支部 名古屋アジャイル勉強会 わんくま同盟 名古屋勉強会
  • 3. わんくま同盟 名古屋勉強会 #34 AGENDA 1. Qtについて 2. Qtの環境構築 3. QtCreatorの使い方 4. Qtで開発
  • 4. わんくま同盟 名古屋勉強会 #34 1. Qtについて QtでC++開発環境構築
  • 5. わんくま同盟 名古屋勉強会 #34 1. Qtについて (1/4) • http://qt-project.org • 「キュート」って発音する • アプリケーションやGUIの開発フレーム ワーク・ライブラリ • 特徴 1. C++クラスライブラリ 2. クロスプラットフォーム対応 3. 統合開発環境が含まれている 4. 商用・OSSのデュアルライセンス
  • 6. わんくま同盟 名古屋勉強会 #34 1. Qtについて (2/4) • Qtの歴史(1/2) – 1991年にノルウェーのQuasar Technologies社が 開発を開始 – 1994年にTrolltech社に社名変更 – 2008年6月にフィンランドのNokia社がTrolltech 社を買収 – 2011年3月にフィンランドのDigia社がNokiaの Qtの商用ライセンス事業とサービス事業を買 収 – 2011年10月にQt ProjectとしてOSSプロジェク ト化。
  • 7. わんくま同盟 名古屋勉強会 #34 1. Qtについて (3/4) • Qtの歴史(2/2) リリース バージョン 備考 1996年 Qt 1.0 X11版及びWindows版 1999年 Qt 2.0 X11版がOSS化 2001年 Qt 3.0 MacOS X版 2005年 Qt 4.0 GPL 2.0(及びそれ以降)ライセンス追加 2007年 Qt 4.5 LGPL 2.1ライセンス追加 2010年 Qt 4.7 Qt/QML, Qt Quickが追加 2012年 Qt 5.0 内部構造一新 2013年 Qt 5.1 Android版, iOS版(共にPreview)が追加 2013年 Qt 5.2 Android版, iOS版がstableに、Desktop周り強化 2014年 Qt 5.3 Windows Runtime対応がstableに 2014年 Qt 5.4 eLinux, eAndroid対応、Web周り強化
  • 8. わんくま同盟 名古屋勉強会 #34 1. Qtについて (4/4) • Qtの開発環境 – http://qt-project.org/downloads – 下記環境以外はソースコードからビルドする か、パッケージ管理からインストール。 – バイナリ提供 • Microsoft Windows(VisualStudio, MinGW) • Apple OS X • Ubuntu Linux – RHELなどにもインストールは可能。
  • 9. わんくま同盟 名古屋勉強会 #34 2. Qtの環境構築 QtでC++開発環境構築
  • 10. わんくま同盟 名古屋勉強会 #34 2. Qtの環境構築 (1/6) • 先程Qtはクロスプラットフォーム開発環境 であると紹介しましたが、それを体験でき る環境を構築したいと思います。 • 今回は、以下の条件で環境を構築します。 – Windows 8.1, x64版 – Qt 5.4 for Windows, MinGW – MinGW-builds external-binary-packages rev13
  • 11. わんくま同盟 名古屋勉強会 #34 2. Qtの環境構築 (2/6) • Qtのインストール – 入手先 • http://www.qt.io/download-open-source/ – Windows用のインストーラーは2種類 • オンライン – 1つのインストーラで複数バージョンのQtのインストール が可能 – MinGW版のインストールはQt 5.4のツリーを展開して個別 に選択する必要あり • オフライン – 自分が使いたいものを選んでダウンロードする
  • 12. わんくま同盟 名古屋勉強会 #34 2. Qtの環境構築 (3/6) • Qtのインストール(続き) – Qtのフォルダ構成(Qt 5.4 + MinGW v4.9.1) • C:¥Qt – 5.4 » mingw491_32 » bin » Include » lib – Docs – Examples – Licenses – Tools » mingw491_32 » QtCreator
  • 13. わんくま同盟 名古屋勉強会 #34 2. Qtの環境構築 (4/6) • MinGW-builds external-binary-packagesのイ ンストール – 何に使うの? • まずMinGW(Minimalist GNU for Windows)は、GNU ツールチェインをWindows OSに移植したもの。 – http://sourceforge.net/projects/mingw/ – MSYS(Minimal SYStem)とは • Windows上において、Unix-Shell、テキスト操作ツー ル、差分操作ツール、アーカイバーツール、 autotoolsなどの開発でよく使われるツール群を MinGW上に移植したもの。 • external-binary-packagesにはMSYSが含まれています。
  • 14. わんくま同盟 名古屋勉強会 #34 2. Qtの環境構築 (5/6) • MinGW-builds external-binary-packagesのイ ンストール(続き) – 入手先 • MinGWプロジェクトとは別?のMinGW-Buildsプロ ジェクトのサイトでバイナリ配布しているもの • http://sourceforge.net/projects/mingwbuilds/files/exte rnal-binary-packages/ – パッケージは7-Zip書庫での提供 • msys+7za+wget+svn+git+mercurial+cvs-rev13.7z • これを解凍すると「msys」フォルダが入っている。
  • 15. わんくま同盟 名古屋勉強会 #34 2. Qtの環境構築 (6/6) • MinGW-builds external-binary-packagesのインス トール(続きの続き) – インストール • 「msys 」フォルダを任意のフォルダに移動する。 • MSYSの自動マウント設定ファイルの「msys¥etc¥fstab」 を「fstab.sample」を参考に編集する。Qtのインストー ルで導入されたMinGWへのパスを記入する。 – 例: C:/Qt/Tools/mingw491_32 /mingw – MSYSの起動確認 • 「msys¥msys.bat」を実行する。 • コンソールで「gcc -v」と打ってコマンドがあれば成功 • MSYSでのWindows上のドライブ移動は「C:¥Windows」 なら「$ cd /c/windows」というようにパスを指定する
  • 16. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方 QtでC++開発環境構築
  • 17. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(1/10) • WindowsのスタートメニューからQtCreator を起動する。
  • 18. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(2/10) • QtCreatorの環境設定 – メニューの[ツール] – [オプション]から設定します。 – Qtやコンパイラの環境確認 • ビルドと実行 – Qtバージョン – コンパイラ – その他You&Iが設定する項目 • テキストエディタ – インデント文字、空白表示 • C++ – コードスタイル • バージョン管理システム – とりあえず使えるレベルのVCSクライアント機能
  • 19. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(3/10) • QtCreatorには最初からサンプルが含まれて おり、QtCreatorから簡単に参照可能。
  • 20. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(4/10) • QtCreatorでプロジェクトを開く(1/4) – 初回時にはプロジェクト設定を行います。
  • 21. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(5/10) • QtCreatorでプロジェクトを開く(2/4) – Qtのインストール時に、MinGW以外のキット 環境(VisualC++、WinRT等)をインスト-ルして いると、プロジェクト作成時にインスト-ル されている全てのキット環境が有効な設定に なってしまうので注意が必要。 – 設定は後から「プロジェクト」から変更可能 です。
  • 22. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(6/10) • QtCreatorでプロジェクトを開く(3/4) – QtCreatorで開発時のフォルダ構成 1. プロジェクト名 2. build-[プロジェクト名]-[キット名]-Debug 3. build-[プロジェクト名]-[キット名]-Release – プロジェクトフォルダ内にはビルドオブジェ クトなどの中間ファイルは出力されない。 – これらは後述しますが、Qtのプロジェクト管 理システム(qmake)を利用した場合です。 qmakeが出力フォルダにMakefileを生成します。
  • 23. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(7/10) • QtCreatorでプロジェクトを開く(4/4) – 今回はMinGW環境なので、コンパイラはGNU Compiler Collecton、タスク実行はmakeコマン ドを利用します。 – 並列ビルドを行いたい場合には、プロジェク ト毎に「プロジェクト」にてmakeコマンドの 並列ビルドオプション(ジョブ数:-j4)を指定す る必要があります。
  • 24. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(8/10) • QtCreatorでビルド&実行 – 左下にビルドターゲット、実行、デバッグ実 行、ビルドのボタンが縦に並んでいます。
  • 25. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(9/10) • QtCreatorでの開発 – QtCreatorは、Qt(qmake)を使ったプログラム開 発専用という訳ではありません。以下の形式 のプロジェクト管理ツールにも対応します。 • autotools (※プラグインの設定が必要) • CMake – 全くQtを使わないプログラムでもQtCreator上 で開発可能です。Makefileの管理方法は上記で 説明した通り、Qtに依存しないものも利用可 能です。
  • 26. わんくま同盟 名古屋勉強会 #34 3. QtCreatorの使い方(10/10) • QtCreatorのプラグイン設定 – メニューの[ヘルプ] – [プラグインについて]を 選択すると、プラグイン設定画面が開きます。 – 「AutotoolsProjectManager」を有効にすると、 autotoolsにも対応可能になります。
  • 27. わんくま同盟 名古屋勉強会 #34 4. Qtで開発 QtでC++開発環境構築
  • 28. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(1/8) • プロジェクトのファイル構成について – プロジェクトファイル(*.pro) – ソースコードファイル(*.cpp, *.h, etc.) – GUIフォームファイル(*.ui) – リソースファイル(*.qrc) • これらは全てテキストファイルです。 • QtCreatorからは、これらのファイルをGUI 操作可能です。
  • 29. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(2/8) • MSYS+QtCreatorのデモ – MSYSの環境も作ったので、 • MSYSでC++のライブラリをビルドし、 • それをQtCreatorから利用してみたいと思います。 – MSYSでビルドしたバイナリは、スタティックリンクライ ブラリのみとなります。DLLやDSOは生成されません。 – 今回は以下のデモを行います • MSYS – OSSのlog4cppログ出力ライブラリをビルド • QtCreator – MYSでビルドしたlog4cppでログ出力
  • 30. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(3/8) • フォルダ構成 – build-Log4cppSample-XXX-Debug/ – build-Log4cppSample-XXX-Release/ – Log4cppSample/ • packages/ – libs/ » include/ : MSYSからインストールされたヘッダ » lib/ : MSYSでビルドしたバイナリ – log4cpp/ : MSYSでのビルド環境 • Log4cppSample.pro • main.cpp
  • 31. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(4/8) • MSYSでlog4cppをビルド – 以下のコマンドを実行 • MinGWでlog4cppをビルドすると以下のエラーが出 ます。これはMinGW環境だけの問題のようです。 • 「log4cpp/tests/Clock.cpp」の一番上に以下の一文を 追加しましょう。 Clock.hh:17:13: error: 'int64_t' does not name a type typedef int64_t usec_t; #include <stdint.h> 1 $ cd project/packages 2 $ tar zxf log4cpp.tar.gz 3 $ cd log4cpp 4 $ ./configure –prefix=`pwd`/../libs 5 $ make –j4 -s 6 $ make install
  • 32. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(5/8) • QtCreatorでビルドしたlog4cppを利用する 設定 – Qtで利用するライブラリの追加は、基本的に プロジェクトファイル(*.pro)を手動で書き換え ます。 – プロジェクトファイル(*.pro)の仕様 • Qt 5.4 > qmake manuals > Variables • http://doc.qt.io/qt-5/qmake-variable-reference.html – qmakeのプロジェクトはMakefileをベースとす るので、Makefileの知識が前提となります。
  • 33. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(6/8) • QtCreatorでビルドしたlog4cppを利用する 設定(続き) – MSYSでビルドしたlog4cppの利用設定 • ヘッダーとライブラリのパス及びライブラリ名を 設定します – プロジェクトファイルを変更したら、メ ニューの[ビルド] – [qmakeの実行]を行い、 Makefileを再生成します。 • 手動でやらなくても保存時に自動で行われますけ ども INCLUDEPATH += $${_PRO_FILE_PWD_}/packages/libs/include LIBS += -L$${_PRO_FILE_PWD_}/packages/libs/lib -llog4cpp
  • 34. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(7/8) • log4cppの出力 – log4cppのサンプルコードをそのまま貼り付け ます。 • http://log4cpp.sourceforge.net – 期待出力 • 一部ファイル(program.log)にも出力されています 1352973121 ERROR : root error 1352973121 ERROR sub1 : sub1 error 1352973121 WARN sub1 : sub1 warn 1352973121 WARN : 1 + 1 == two ? 1352973121 ERROR : Streamed root error 1352973121 ERROR sub1 : Streamed sub1 error 1352973121 WARN sub1 : Streamed sub1 warn 1352973121 ERROR : Another streamed error
  • 35. わんくま同盟 名古屋勉強会 #34 4. Qtで開発(8/8) • Qtアプリケーションの配布 – 以下のフォルダ構成&ランタイム配置にする • SomeQt5Application.exe • icudt53.dll • icuin53.dll • icuuc53.dll • libgcc_s_dw2-1.dll • libstdc++-6.dll • libwinpthread-1.dll • Qt5Core.dll • Qt5Gui.dll • Qt5Widgets.dll • platforms¥ – qminimal.dll – qoffscreen.dll – qwindows.dll 以下のフォルダからコピー ・Qtのbinフォルダ MinGWの実行ランタイム Qtの実行ランタイム ・Qtのpluginsフォルダ 「platforms」フォルダ ここで示しているのは最低限 のもので、実装内容によって、 必要になる ・Qtの実行ランタイム ・Qtのpluginsフォルダ は変わります。