2

我想在带有 CMake 的 Windows 10 上将 clang-tidy (LLVM v7.0.0) 与llvm-header-guard一起用于以下头文件

#ifndef _BAR_H_
#define _BAR_H_

namespace FOO {
namespace BAR {
class BarC {
public:
  BarC() = default;
  ~BarC() = default;
  BarC(const BarC &iValue) = delete;
  const BarC &operator=(const BarC &iValue) = delete;
  BarC(BarC &&iValue) = delete;
  BarC &operator=(BarC &&iValue) = delete;
};
} // namespace BAR
} // namespace FOO

#endif // _BAR_H_

其中ROOT为 C:\User\Zlatan\Project\Guard,头文件 Bar.h 位于ROOT \Foo\Bar\src\include\Bar\Bar.h

不幸的是,这会产生以下警告

警告:标头保护不遵循首选样式 [llvm-header-guard]

我读了什么是正确的 LLVM 标头保护样式?但我没有找到正确的风格

#ifndef BAR_BAR_H
#ifndef INCLUDE_BAR_BAR_H
#ifndef SRC_INCLUDE_BAR_BAR_H
#ifndef BAR_SRC_INCLUDE_BAR_BAR_H
#ifndef FOO_BAR_SRC_INCLUDE_BAR_BAR_H
#ifndef C_USERS_ZLATAN_PROJECT_GUARD_FOO_BAR_SRC_INCLUDE_BAR_BAR_H

并再次收到

警告:标头保护不遵循首选样式 [llvm-header-guard]

我的用例的正确样式是什么?我是否必须在 CMake 中配置一些东西(已经使用 CMAKE_EXPORT_COMPILE_COMMANDS=ON)?

更新

跑步

cd C:/Users/Zlatan/Project/Guard/build/Release

clang-tidy -checks='llvm-header-guard' -header-filter=.* -p=. ../../Foo/Bar/src/Bar.cpp

正如 cmd 中所建议的那样,生成以下输出

C:\Users\Zlatan\Project\Guard\build\Release\../../Foo/Bar/src/include/Bar/Bar.h: warning: header guard does not follow preferred style [llvm-header-guard]
#ifndef BAR_BAR_H
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        C:\USERS\ZLATAN\PROJECT\GUARD\BUILD\RELEASE\__\__\FOO\BAR\SRC\INCLUDE\BAR\BAR_H

最好的问候兹拉坦

4

0 回答 0