cmakeでccacheを使う
ccacheを使うとコンパイルの中間ファイルがキャッシュされ、2度め以降のコンパイルが速く終わります。
cmakeでのビルドで、ccacheを活用するにはどうしたらよいでしょうか。
よくあるのはexport CC='ccache gcc'
とかでコンパイラ自体をccacheに置き換える方法です。
cmakeにはコンパイル時にラッパを噛ませるための、RULE_LAUNCH_COMPILEプロパティがあります。
このプロパティを使い、かつcmakeのオプションに対応したのが以下です。ccmake
等で有効/無効を調整できるので、少し便利です。
option(CCACHE_ENABLE
"If the command ccache is avilable, use it for compile."
ON)
find_program(CCACHE_EXE ccache)
if(CCACHE_EXE)
if(CCACHE_ENABLE)
message(STATUS "Enable ccache")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_EXE}")
endif()
endif()
cmake 3.4以降ならCMAKE_<LANG>_COMPILER_LAUNCHER変数を使ったほうがよさそうです。
Specify multiple RULE_LAUNCH_COMPILE will result in command line with semicolon (#17273) · Issues · CMake / CMake · GitLab
option(CCACHE_ENABLE
"If the command ccache is avilable, use it for compile."
ON)
find_program(CCACHE_EXE ccache)
if(CCACHE_EXE)
if(CCACHE_ENABLE)
message(STATUS "Enable ccache")
if(CMAKE_C_COMPILER_LAUNCHER)
set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_C_COMPILER_LAUNCHER}" "${CCACHE_EXE}")
else()
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_EXE}")
endif()
if(CMAKE_CXX_COMPILER_LAUNCHER)
set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_CXX_COMPILER_LAUNCHER}" "${CCACHE_EXE}")
else()
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_EXE}")
endif()
endif()
endif()
Author And Source
この問題について(cmakeでccacheを使う), 我々は、より多くの情報をここで見つけました https://qiita.com/tenmyo/items/b1d763c81e2b731c4f12著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .