簡體   English   中英

如何在 Windows MSVC 上使用 ccache > 4.6.1 和 cmake?

[英]How to use ccache > 4.6.1 on Windows MSVC with cmake?

4.6.1 版本開始,ccache 支持使用 msvc 進行編譯。

在我的 Windows 環境中,我安裝了 ccache 並且可以通過命令行使用。 我嘗試通過以下方式將 ccache 集成到我的 cmake 項目中:

根 CMakeLists.txt:

find_program(CCACHE_FOUND ccache) 
if(CCACHE_FOUND)
    message("CCACHE is found")
    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) # Less useful to do it for linking, see edit2
else(CCACHE_FOUND)
    message("CCACHE is NOT found")
endif(CCACHE_FOUND)

這是我在 CMakePresets.json 中的 cmake 配置:

{
"name": ",
"hidden": false,
"generator": "Visual Studio 17 2022",
"toolset": {
"value": "host=x64",
"strategy": "external"
},
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_C_COMPILER": "cl.exe",
"CMAKE_CXX_COMPILER": "cl.exe",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_TOOLCHAIN_FILE": {
value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"type": "FILEPATH"
},
"VCPKG_INSTALLED_DIR": "${sourceDir}/build/packages",
"VCPKG_TARGET_TRIPLET": "x64-windows-static-md"
},
"vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Windows" ] } }
}

運行構建時,我可以看到 ccache 已找到,但沒有任何跡象表明它可以工作或被構建系統調用。

運行ccache -s顯示每個 stat 都是 0,就好像從未調用 ccache 一樣。

問題:

  • 如何使用 MSVC & cmake 正確配置 ccache?
  • 如何確保 ccache 正常工作並且構建系統正在使用正確的命令? 有沒有我可以提供給 cmake / ccache 的“詳細”選項來調試這個?

<LANG>_COMPILER_LAUNCHER屬性不適用於 Visual Studio 生成器。 根據文檔,它僅適用於 Makefile 和 Ninja 生成器: https://cmake.org/cmake/help/v3.24/prop_tgt/LANG_COMPILER_LAUNCHER.Z7FC35FDC30D825

指定一個以分號分隔的列表,其中包含用於編譯器啟動工具的命令行。 Makefile 生成器和 Ninja 生成器將運行此工具並將編譯器及其 arguments 傳遞給該工具。 一些示例工具是 distcc 和 ccache。

要使其工作,您需要在配置 CMake 項目時指定生成器,例如

cmake -S C:\project\src -B C:\project\build -G "Ninja"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM