0

在我的项目中,我能够使用 ninja 驱动 gcc 与 distcc 和 ccache 进行构建,并获得非常好的编译时间。

一旦我启用了 clang-tidy,distcc 分发一次只分发两个作业,性能显然很糟糕。

有谁知道是否存在已知问题让 clang-tidy 与 distcc 一起工作,或者这只是我遇到的一些配置问题或命令序列问题?

这是在 Ubuntu 16.04、gcc 5.4、clang-tidy 6.0、cmake 3.12.1 上运行的

编辑:

如果没有实际的命令行,问题就不清楚

    cmake-3.12.1-Linux-x86_64/bin/cmake -E __run_co_compile --launcher="/usr/bin/distcc;/usr/bin/ccache" --tidy=/usr/bin/clang-tidy-6.0 --source=../src/test.cpp -- /usr/bin/c++ -o test.cpp.o  ..........

(由于我的雇主,不能分享太多的实际命令,但这应该给出一个想法)

该行实际上指出问题在于命令的启动器部分的构建方式。

我们如何创建这样一个混乱的命令?嗯......这就是我们在我们的CMakeLists.txt

option(ENABLE_DISTCC "Use distcc to distribute compilation over network." OFF)
if(ENABLE_DISTCC)
    message(STATUS "Detecting distcc: ")
    find_program(DISTCC_COMMAND distcc)
    mark_as_advanced(DISTCC_COMMAND)
    if(DISTCC_COMMAND)
        message(STATUS "Detecting distcc: ${DISTCC_COMMAND} - found")
        list(APPEND CMAKE_CXX_COMPILER_LAUNCHER "${DISTCC_COMMAND}")
    else()
        message(WARNING "Detecting distcc: not found")
    endif()
endif()

option(ENABLE_CCACHE "Use ccache to cache compliation results." ON)
if(ENABLE_CCACHE)
    message(STATUS "Detecting ccache: ")
    find_program(CCACHE_COMMAND ccache)
    mark_as_advanced(CCACHE_COMMAND)
    if(CCACHE_COMMAND)
        message(STATUS "Detecting ccache: ${CCACHE_COMMAND} - found")
        list(APPEND CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_COMMAND}")
    else()
        message(WARNING "Detecting ccache: not found")
    endif()
endif()

那么......使用这两个部分为命令部分生成合理输出的正确方法是什么--launcher?我认为的最终目标更像是--launcher="/usr/bin/distcc /usr/bin/ccache".

4

0 回答 0