簡體   English   中英

是否可以使用 ccache 或類似方法來加速 clang-tidy?

[英]Is it possible to accelerate clang-tidy using ccache or similar?

由於在我們的 CI 服務器上使用ccache ,我們發現構建時間方面的瓶頸現在是我們的靜態分析通道,它使用了clang-tidy等工具。 有沒有人知道一種以類似於ccache使用常規編譯器的方式加速clang-tidy的方法?

clang-tidy-cache雖然我不知道它是如何與 ccache 一起工作的。

我在這里發現了另一個重要細節:

https://gitlab.kitware.com/cmake/cmake/-/merge_requests/1791/diffs

在這里使用:

https://reviews.bitcoinabc.org/D5150?id=15995

因此,為了能夠在使用以下命令集成 clang-tidy 時緩存編譯器的輸出: set(CMAKE_CXX_CLANG_TIDY ...

方法需要使用COMPILER_LAUNCHER方法來配置ccache

find_program(CCACHE ccache)
if(CCACHE)
    set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE})
    set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE})
endif(CCACHE)

而不是啟動器規則方法:

find_program(CCACHE ccache)
if(CCACHE)
    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE})
    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
endif(CCACHE)

最后,我找到了一個解決方案:它將構建系統切換到bazel bazel 是一個非常通用的構建系統,它定義了一個動作圖。 基本上每個動作都有一組輸入和輸出。 基於輸入,可以緩存輸出。 因此,bazel 從根本上解決了問題。

可以在此處找到以可緩存方式集成 clang-tidy 的必要規則: https : //github.com/erenon/bazel_clang_tidy

為了使用緩存,您需要設置一個遠程緩存 這可以使用 docker-compose 腳本來完成。 必要的 docker 容器已經存在。 可以在這里找到讓它運行的命令: https : //github.com/buchgr/bazel-remote/

最后,bazel 還解決了鏈接階段結果的緩存問題。

不僅如此,bazel 還允許構建其他語言,如 java。 因此,在復雜的項目中,它允許用一個單獨的構建系統替換所有其他構建系統。

最后,bazel 還允許在集群上並行構建。

最后但並非最不重要的是,您可以定義多個平台工具鏈 總而言之,這允許進行跨平台構建。

暫無
暫無

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

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