// a.cc
#include "a.h"
// a.h
#include "b.h"
#include "c.h"
// b.h
#include "c.h"
// c.h
#include <string>
“b. h”由当前合规单位直接处理
“c.h”由“gcc -H”间接处理
我想防止开发人员直接在“a.cc“中包含“c.h”。
gcc有插件事件“PLUGIN_INCLUDE_FILE”,不幸的是,提供的信息,不像clang,不足以做到这一点,(也许我没有找到它)
P.S.我想做一些像bazel layercheck(https:bazel.build/reference/be/c-cpp#hdrs)(clang -fmodules-decluse blabla...),使用cmake和gcc工具链
P.S.如果基本名称相同,则“xx.h”和“xx.cc“为组件单元
1条答案
按热度按时间yv5phkfx1#
命令行选项
-H
导致gcc打印包含的每个头文件的名称。自动生成的
.d
头依赖文件还包含.o
文件所包含的所有文件的完整路径。我想阻止开发人员直接在“a.cc“中包含“c.h”
您可以使用gcc用于此目的的相同方法。例如:/usr/lib/gcc/x86_64-linux-gnu/11/include/avx2intrin.h: