在我的项目中,我能够使用 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"
.