LoginSignup
7

More than 5 years have passed since last update.

Siv3Dでプリコンパイル済みヘッダーを使用してビルド時間を半分に短縮する

Last updated at Posted at 2015-12-17

Siv3D Advent Calendar 2015の18日目の記事です。

Siv3D、便利ですがビルドが大変です。SSDだと数秒ですがUSBに入れているプロジェクトでは数十秒かかります。そこでプリコンパイル済みヘッダーを使用してビルド時間を短縮しよう、ということです。
Play Siv3D!のFAQには

コンパイル時間を短くする方法はある?
プリコンパイル済みヘッダを作成・使用することで、ビルド時間を半分以下に短縮できます。

とありますが、詳しい説明がなかったので手順を記しておきます。
この記事ではVisual Studio 2013 Community update 5およびSiv3D June v2を使用します。

プロジェクトを作成する

いつも通りにSiv3Dのプロジェクトを作成します。すでに作成している場合は次へ進んでください。

ヘッダー ファイルを作成する

  1. [表示(V)] -> [ソリューション エクスプローラ(P)] をクリックします。

  2. [ヘッダー ファイル]を右クリックし、[追加(D)] -> [新しい項目(W)...] をクリックします。

  3. [ヘッダーファイル (.h)] をクリックし、[名前(N)] に stdafx.h と入力して [追加(A)]をクリックします。

  4. stdafx.hが開いているはずなので、以下のように入力して保存します。

stdafx.h
#pragma once
#include <Siv3D.hpp>

C++ ファイルを作成する

  1. [表示(V)] -> [ソリューション エクスプローラ(P)] をクリックします。

  2. [ソース ファイル]を右クリックし、[追加(D)] -> [新しい項目(W)...] をクリックします。

  3. [C++ ファイル (.cpp)] をクリックし、[名前(N)] に stdafx.cpp と入力して [追加(A)]をクリックします。

  4. stdafx.cppが開いているはずですが、何も入力しません。

プロジェクトのプロパティを変更する

  1. [プロジェクト(P)] -> [(プロジェクト名) のプロパティ(P)...] をクリックします。

  2. 左のツリーの [構成プロパティ] -> [C/C++] -> [プリコンパイル済みヘッダー] をクリックします。

  3. [構成(C)] が [すべての構成]になっていることを確認し、[プリコンパイル済みヘッダー] を [使用 (/Yu)] に変更します。

  4. 左のツリーの [詳細設定]をクリックします。

  5. [必ず使用されるインクルード ファイル] に stdafx.h と入力し、 [OK]をクリックします。

stdafx.cppのプロパティを変更する

  1. [表示(V)] -> [ソリューション エクスプローラ(P)] をクリックします。

  2. stdafx.cpp を右クリックし、プロパティ(R)をクリックします。

  3. 左のツリーの [構成プロパティ] -> [C/C++] -> [プリコンパイル済みヘッダー] をクリックします。

  4. [構成(C)] が [すべての構成]になっていることを確認し、[プリコンパイル済みヘッダー] を [作成 (/Yc)] に変更して、 [OK]をクリックします。

ビルドする

  1. いつも通りビルドしてみます。1回目なのでビルド時間は通常と変わらないはずです。
  2. Main.cppの一部を変えてもう一度ビルドしてみましょう。ビルドログを確認するとstdafx.cppがビルドされなくなくなっており短い時間で起動したはずです。

補足・蛇足

  • クリーンしたあと1回目のビルド時間は通常と変わりません。
  • ソースファイル(Main.cpp等)には#include <Siv3D.hpp>を書かなくても動きます。
  • 手順が多いのでSiv3Dのテンプレートに入れて欲しいです(要望)

明日は@Mitsugoro32さんです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7