SlideShare a Scribd company logo
1 of 7
Download to read offline
マルチプラットフォームを意識
したQtプロジェクトの作り⽅
チブル・システムズ
2019.6.30
Qtのプロジェクト
• 単⼀プロジェクト
• アプリケーションや共有ライブラリを⼀つで完結するプロジェクト
• 複合プロジェクト
• サブディレクトリプロジェクトを通して、複数のプロジェクトをまと
めて管理するプロジェクト
ビルドディレクトリ例
• 単⼀プロジェクト
• build-(Project)-Desktop_Qt_(QtVer)_(Compiler)_(32/64)bit-
(Release/Debug)/(release/debug[windows only])/(obj/lib/dll/exeな
ど)
• 複合プロジェクト
• build-(RootProject)-Desktop_Qt_(QtVer)_(Compiler)_(32/64)bit-
(Release/Debug)/(SubProject)/(release/debug[windows
only])/(obj/lib/dll/exeなど)
プロジェクトの均⼀化
• インストーラなどを作る際に、プロジェクト毎にビルドディレ
クトリがまちまちの構造になっていると、その対応だけで労⼒
を費やしてしまう。
• プロジェクトの構成を均⼀化することで、コスト削減に繋がる。
• オススメは、サブディレクトリプロジェクトの直下にサブプロ
ジェクトをぶら下げる⽅法。
• どんなに⼩さいプロジェクトでも、サブディレクトリを必ず作る。
• プロジェクトを分けたくなったときに、簡単に対応できる。
• ビルドディレクトリも均⼀なので、インストーラも作りやすい。
QtプロジェクトをGitリポジトリで管理
• Qt Creator(IDE)は、gitを始め、複数のSCMに対応。
• Qtはマルチプラットフォームを開発できるので、リモートリポ
ジトリにコードを置いて、Windows/MacOS/Linuxそれぞれに
配置して確認したくなる。
• 単にネットワークドライブなどで共通化するのは避けたい。
• ***.pro.userというファイルが端末依存になり、競合する。
.priファイル
• Qtのqmakeでは、アプリケーションや共有ライブラリのメインとし
て読み込まれるプロジェクトファイル(*.pro)と、プロジェクトイン
クルードファイル(*.pri)に⼤別される。
• プロジェクトの主たる設定は*.proに書き込む。
• プラットフォーム毎に変化する設定を*.priに書き込み、.proに読み
込ませるようにする。
• 個⼈利⽤だけでなく、リポジトリを公開して他者に使ってもらう場
合も有効である。
• その場合は、「ここにこの名前で.priを作り、こういう変数であなた固有の値
を書いてね」と明⽰しておくとよい。
• メインプロジェクトディレクトリの⼀つ上(サブディレクトリの2つ
上)の階層に置くと、他のプロジェクトの邪魔にならない。
• 例) include(../platoform.pri)
例) Notes C API
を読み込む。
// ../platform.pri (for Windows)
NotesCAPIPath = C:/Users/myhome/notesapi901
// ../platform.pri (for MacOS)
NotesCAPIPath = /Users/myhome/notesapi901
NotesLibsPath = '/Applications/IBM Notes.app/Contents/MacOS’
// ../platform.pri (for Linux)
NotesCAPIPath = /home/myhome/notesapi901
NotesLibsPath = /opt/ibm/notes
// myproject.pro
TEMPLATE = subdir // サブディレクトリプロジェクト
CONFIG += ordered // 順番にビルドする
SUBDIRS += myshare myapp
// myshare/myshare.pro and myapp/myapp.pro 詳細はNotes C APIで確認
include(../../platform.pri)
DEFINES += PRODUCTION_VERSION
!macx {
DEFINES += W32 W DTRACE
}
!win32 {
DEFINES += HANDLE_IS_32BITS LARGE64_FILES OVERRIDEDEBUG
}
win32 {
DEFINES += NT _CRT_SECURE_NO_WARNINGS DUMMY
QMAKE_CXXFLAGS += -wd4503 -wd4005
contains(QMAKE_TARGET.arch, x86_64) {
DEFINES += W64 ND64 _AMD64_ ND64SERVER
NotesLibsPath = $$NotesCAPIPath/lib/mswin64
} else {
DEFINES += ND32 _X86_
NotesLibsPath = $$NotesCAPIPath/lib/mswin32
}
} else:macx {
DEFINES += MAC MAC_OSX MAC_CARBON NO_NULL_VTABLE_ENTRY __CF_USE_FRAMEWORK_INCLUDES__
TARGET_API_MAC_CARBON
DEFINES += LONGIS64BIT
} else:unix {
DEFINES += UNIX LINUX LINUX86 GCC3 GCC4 GCC_LBLB_NOT_SUPPORTED PTHREAD_KERNEL _REENTRANT
USE_THREADSAFE_INTERFACES _POSIX_THREAD_SAFE_FUNCTIONS HAS_IOCP HAS_BOOL HAS_DLOPEN
USE_PTHREAD_INTERFACES _LARGEFILE_SOURCE _LARGEFILE64_SOURCE
contains(QMAKE_TARGET.arch, x86_64) {
DEFINES += ND64 LINUX64 LINUX86_64 NDUNIX64 LONGIS64BIT
}
LIBS += -Wl,-rpath,$$NotesLibsPath
}
INCLUDEPATH += $$NotesCAPIPath/include
DEPENDPATH += $$NotesCAPIPath/include
LIBS += -lnotes -L$$NotesLibsPath

More Related Content

Similar to How to create a multi platform aware qt project

.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CDYuta Matsumura
 
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...Naoki (Neo) SATO
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure KubernetesIssei Hiraoka
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今Yuki Igarashi
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用賢次 海老原
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Yuki Suga
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜日本マイクロソフト株式会社
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKitNaruto TAKAHASHI
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CDIssei Hiraoka
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Koji Shinba
 
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーションAkira Inoue
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...Akira Inoue
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuronekoKohki Nakashima
 
Windows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition OverviewWindows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition OverviewKazuki Takai
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来decode2016
 

Similar to How to create a multi platform aware qt project (20)

【BS7】GitHubをフル活用した開発
【BS7】GitHubをフル活用した開発【BS7】GitHubをフル活用した開発
【BS7】GitHubをフル活用した開発
 
node-webkit
node-webkit node-webkit
node-webkit
 
it's Qt!
it's Qt!it's Qt!
it's Qt!
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CD
 
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
~ アプリ開発に新たな息吹を ~ クラウドが当たり前の今こそ知っておきたい Azure & Visual Studio コラボレーション
 
20060419
2006041920060419
20060419
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
 
Windows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition OverviewWindows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition Overview
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
 

How to create a multi platform aware qt project