proファイルの文法まとめ

プロジェクトのビルドに使われるプロジェクトファイル(.pro)についていろいろメモしていきたいと思います。

コメントの仕方

プロジェクトファイル中でコメントを書きたい場合は普通のメイクファイルのように # 以降の行がコメントになります。

例えば

QT += core gui
	#ここがコメント

のように書けます。

変数の宣言

変数は変数名と値を=または+=で結ぶことで値を代入できます。

QT += core gui
VAL = 1

条件分岐

例えばバージョン名は定義しておいてその値に応じて処理を変えたかったらequalsマクロを使えます。

使い方は

VERSION = 1
equals(VERSION, 1){
	#バージョンが1の時の処理
}equals(VERSION, 2){
	#バージョンが2の時の処理
}else{
	#それ以外の処理
}

equalsの後の変数が比較する値と等しいときにブロック内の処理が実行することができます。

それ以外だった場合はelse内の処理が実行されます。

そうではなく、もし単純に変数が定義されているかどうかを調べたい場合は次のようにすればOKです。

VERSION = 1
VERSION{
	#VERSIONが定義されているときの処理
}
!VERSION{
	#VERSIONが定義されていないときの処理
}

メッセージ出力

もしログ出力に何かメッセージを出力したい場合はmessageマクロが使えます。

MESSAGE = "Hello!!"
message($$MESSAGE)

messageに渡した内容がコンパイル出力に表示されます。

マクロ定義

プロジェクトファイル内でマクロを定義したい場合は予約済みのDEFINESにマクロを追加します。

例えば

DEFINES += MACRO

DEFINES変数に追加したマクロはソースやヘッダ内で定義されたことになります。

なのでソースファイルやヘッダファイルでマクロを使って分岐コンパイルさせることが可能です。

#ifdef MACRO
	///マクロが定義済み
#else
	///マクロが未定義
#endif

これはプロジェクト全体で共通な設定を変えたいときに便利です。

もしマクロに初期値を代入したい場合は次のようにも書けます。

DEFINES += MACRO="value"

定義済みマクロ

QTではあらかじめ定義済みのマクロがかなり多くあります。

代表的なものを上げると

QT

使用するモジュールを += で追加できます。

全ての使用可能なモジュールはこのページに載っています。

TARGET

その名の通り、プロジェクトをビルドしたときに出来上がる実行ファイルまたはライブラリの名前です。(拡張子は含まない)

TEMPLATE

プロジェクトの種類を指定するマクロです。

もしアプリケーションとしてビルドするなら app 、ライブラリとしてビルドするなら lib を代入します。

全ての値一覧はこのページにあります。

CONFIG

ビルド設定を += で追加できます。

例えばライブラリのリンク形式を静的リンクにしたい場合は

CONFIG += staticlib

とするととプロジェクトが静的ライブラリとしてビルドされます。

INCLUDEPATH

これは指定したディレクトリをヘッダファイルを検索するときのリストに含めるために使用します。

例えば次のような構成のプロジェクトを考えます。

- MyApp
    - MyApp.pro
    - subA
        subA.h
    - subB
        subB.cpp

もし、subB.cppがsubA.hをインクルードする場合、相対パスでこう書きます。

#include "../subA/subA.h"

インクルードディレクトリの検索対象にsubAディレクトリを追加するには

INCLUDE += $$PWD/subA

とすることで

#include "subA.h"

のようにアクセスできるようになります。

最後に...

長くなったので、これくらいで終わりにしておきます。

もしまた何か見つけたら更新するかもしれません。

では、また!

関連項目
プライバシーポリシー