c++ - 错误:无法处理编译,在 '' [clang-diagnostic-error] 中只需要一个编译器作业
问题描述
在我将其添加到我的 CmakeLists.txt 以启用 clang-tidy 检查后,构建失败且没有太多有用的信息:
if(ENABLE_CLANG_TIDY)
find_program(CLANGTIDY clang-tidy)
if(CLANGTIDY)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_CLANG_TIDY "${CLANGTIDY};-extra-arg=-Wno-unknown-warning-option;-header-filter=${CMAKE_SOURCE_DIR}/src/*;")
else()
message(SEND_ERROR "clang-tidy requested but executable not found")
endif()
endif()
但是,当我调用cmake -DENABLE_CLANG_TIDY=ON .. && make
构建过程在 2% 处停止时,对错误的解释最少。这是其中最有意义的部分:
make[2]: Leaving directory '/path/to/module/build'
make -f src/CMakeFiles/module.dir/build.make src/CMakeFiles/module.dir/build
make[2]: Entering directory '/path/to/module/build'
[ 2%] Building CXX object src/CMakeFiles/module.dir/api/base_controller.cpp.o
cd /path/to/module/build/src && ccache /usr/local/bin/cmake -E __run_co_compile --tidy="/usr/bin/clang-tidy;-extra-arg=-Wno-unknown-warning-option;-header-filter=/path/to/module/src/*;-p=/path/to/module/src;;--extra-arg-before=--driver-mode=g++" --source=/path/to/module/src/api/base_controller.cpp -- /usr/lib64/ccache/c++ -I/path/to/module/src -I/home/vagrant/.conan/data/catch2/2.11.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include -DFAST_LOCK -D__CPU_x86_64 -DPKG_MALLOC -DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE -DHAVE_RESOLV_RES -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST -DUSE_NAPTR -DWITH_XAVP -DMEM_JOIN_FREE -DF_MALLOC -DQ_MALLOC -DTLSF_MALLOC -DDBG_SR_MEMORY -DUSE_TLS -DTLS_HOOKS -DUSE_CORE_STATS -DSTATISTICS -DMALLOC_STATS -DUSE_SCTP -DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DCC_GCC_LIKE_ASM -DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD -DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER -DHAVE_IP_MREQN -DUSE_RAW_SOCKS -DHAVE_EPOLL -DHAVE_SIGIO_RT -DSIGINFO64_WORKARROUND -DUSE_FUTEX -DHAVE_SELECT -D_GNU_SOURCE -DCUSTOM_LOG_FMT -fPIC -Wall -Werror -Wextra -Wno-write-strings -Wno-format -g -Wextra -Wno-error=class-memaccess -Wno-error=implicit-fallthrough -O3 -DNDEBUG -D_GLIBCXX_USE_CXX11_ABI=1 -o CMakeFiles/module.dir/api/base_controller.cpp.o -c /path/to/module/src/api/base_controller.cpp
error: unable to handle compilation, expected exactly one compiler job in '' [clang-diagnostic-error]
Error while processing some/path/src/.
5481 warnings and 1 error generated.
Error while processing some/path/src/api/file.cpp.
Suppressed 5481 warnings (5403 in non-user code, 78 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
Found compiler error(s).
一些注意事项:
- 没有
ENABLE_CLANG_TIDY
标志,项目编译就好了 - 我已修复
clang-tidy
报告的错误
解决方案
我遇到了同样的问题,解决方案很简单 - 删除 CMAKE_CXX_CLANG_TIDY 字符串中的最后一个分号:
您的线路:
set(CMAKE_CXX_CLANG_TIDY "${CLANGTIDY};-extra-arg=-Wno-unknown-warning-option;-header-filter=${CMAKE_SOURCE_DIR}/src/*;")
替换为:
set(CMAKE_CXX_CLANG_TIDY "${CLANGTIDY};-extra-arg=-Wno-unknown-warning-option;-header-filter=${CMAKE_SOURCE_DIR}/src/*")
推荐阅读
- jenkins - How to know which slave run the job?
- c# - ASP.NET Identity - 如何获取所有用户的下拉列表
- python-3.x - 如何解决(python3.7 64bit)中的pyaudio安装问题
- java - 具有自定义 SSLSocketFactory 的 T3 客户端
- vector - 迭代期间的复杂向量操作
- ios - 如何从firebase读取数据?
- maven - 在创建功能分支时自动创建 Package Feed
- php - ajax成功后无法在div中显示错误文本
- kubernetes - 命名空间“卡住”为终止,我如何删除它
- php - Symfony 3.4 应用程序中的“驱动程序发生异常:找不到驱动程序”