c++ 防止clang-tidy在生成的文件上运行

jrcvhitl  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(161)

我们有一个项目,其中包含了一些protobuf文件,这些文件会被预编译成C++文件。不幸的是,这些文件(就像项目中的其他源文件一样)会被clang-tidy检查,并生成大量警告。
相关的顶级CMakeLists.txt语句包括:

# For all targets
set(CMAKE_CXX_CLANG_TIDY ${CLANG_TIDY_EXECUTABLE}; --header-filter=.)

# Generated protobufs
include_directories(SYSTEM ${CMAKE_BINARY_DIR}/grpc_interface)

target_link_libraries(${PROJECT_NAME}
    # ...
    grpc_services
)

并且grpc_interface/CMakeLists.txt包含:

project(grpc_services)

set(PROTO_IMPORT_DIRS
    ${CMAKE_SOURCE_DIR}/protocols/protobuf/
)

set(PROTOS
    ${CMAKE_SOURCE_DIR}/protocols/protobuf/test_message.proto
)

add_library(${PROJECT_NAME} STATIC ${PROTOS})

target_link_libraries(${PROJECT_NAME}
    PUBLIC
        protobuf::libprotobuf
        gRPC::grpc++
)

get_target_property(GRPC_CPP_PLUGIN gRPC::grpc_cpp_plugin LOCATION)

protobuf_generate(
    TARGET ${PROJECT_NAME}
    IMPORT_DIRS ${PROTO_IMPORT_DIRS}
    LANGUAGE cpp
)

protobuf_generate(
    TARGET ${PROJECT_NAME}
    IMPORT_DIRS ${PROTO_IMPORT_DIRS}
    LANGUAGE grpc
    GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc
    PLUGIN "protoc-gen-grpc=${GRPC_CPP_PLUGIN}"
)

一种选择是将禁用所有警告的.clang-tidy文件复制到${CMAKE_BINARY_DIR}/grpc_interface目录中,但我认为这仍然会导致分析这些文件的时间损失。
“grpc_services”目标仅包含生成的文件。
有没有更好的方法来禁用只在该文件夹中进行整齐处理?

0yg35tkg

0yg35tkg1#

由于“grpc_services”目标只包含生成的文件,因此可以将该目标上的the CXX_CLANG_TIDY target property设置为空。

相关问题