プリコンパイル済みヘッダの設定#
プリコンパイル済みヘッダの設定をしてビルド時間を短縮する。
CMake における設定#
CMake では以下のような形式で設定を記載する。
target_precompile_headers(<target> <PRIVATE|PUBLIC|INTERFACE> <headers>...)
例えば、CMake のターゲット example で
ヘッダ <chrono>
と <type_traits>
をコンパイル済みヘッダにすると以下のようになる。
target_precompile_headers(example PRIVATE <chrono> <type_traits>)
Note
例のため普通の標準ライブラリのヘッダを指定しているが、 実際にはもっとビルドに影響する重いヘッダを指定する。
Ccache と併用するための設定#
ccache と併用する場合、 ccache が正しくコンパイル結果をキャッシュできるようにするため、 追加の設定が必要になる。
環境変数として、以下を設定する。
CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime,include_file_ctime
ビルド時の設定として、以下が必要となる。
プリコンパイル済みヘッダは
-include
オプションで指定する必要がある。Hint
上記の CMake の記述をしていれば
-include
オプションは自動で設定される。Clang の場合、
-fno-pch-timestamp
オプションを指定する。CMake の場合、以下のように記載する。 (
example
のところに CMake のターゲットの名称を記載する。)if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") target_compile_options(example PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:SHELL:-Xclang -fno-pch-timestamp>") endif()