Qtでプリコンパイルヘッダを使う

C++のコンパイルは時間がかかる。ソースファイルでインクルードされている全てのファイルをパースしなければならないため。C++ではヘッダに実装を書く事も多くなりさらに重くなっている。

プリコンパイルヘッダとはソースコードの共通の最初の部分をあらかじめコンパイルしておきそれを共通で利用する方法。最初の部分は共通でないとならないので、その共通の部分を1つのヘッダファイルにしておき、ソースコードではそれをファイルの先頭でインクルードすることで利用する。経験上ではMicrosoftclコンパイラだととても早くなる。

この共通の部分には普通は他のライブラリのヘッダファイル、例えばWindows.hstringvectorなどの標準ライブラリなど自分で編集しないファイルをおく。

Visual Studioでソリューションを作成すると自動でこのプリコンパイルをやってくれるが、QtのQt Creatorなどではやってくれないのでその方法。

*.proファイルにPRECOMPILED_HEADERを追加

以下の行を*.proファイルに追加する。

stable.hの名前は好きでいいはず。Visual StudioなどではStdAfx.hpch.hに相当する。

stable.hを新規にプロジェクトに追加

stable.hを新規にプロジェクトに追加してそこに共通の#includeを書く、QtなのでQで始まるファイルが多くなると思われる。ここではソースファイル郡から検索する方法を紹介。

コマンドで#includeを見つける

以下のコマンドはsrc/以下から全てのファイルを検索してインクルードを見つける。

-hはファイル名を表示しないオプション。このコマンドで表示されたものをstable.hに書く。以下は例。

準備完了

これでプリコンパイルの準備は出来た。Visual Studioとは違いソースコードでstable.hをインクルードしなくても良い。勝手にやってくれるようだ。ソースコード中の今までのインクルードは別にそのままでも良い、というかそのままにしておくべき。プリコンパイルを利用できない環境だと困るため。通常はすでにインクルードされているものは除外するように記述されているので問題ない。

ビルドをして早くなったか確認する。

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)