[英]Prevent clang-tidy from running on generated files
我们有一个项目,其中包含预编译为 C++ 文件的 protobuf 文件。 不幸的是,这些文件(与项目中的其他源文件一样)会被 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
目录中,但我认为这仍然会导致 clang-tidy 解析这些文件的时间损失。
“grpc_services”目标只包含生成的文件。
是否有更好的方法来仅在该文件夹中禁用 clang-tidy 处理?
由于“grpc_services”目标只包含生成的文件,您可以将该目标上的CXX_CLANG_TIDY
目标属性设置为空。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.