clang-format имеет IncludeIsMainRegex
, чтобы определить, имеют ли несколько файлов один и тот же основной заголовок , чтобы сначала разместить эту директиву #include
.Достаточно аккуратно.
Я почти всегда использую заголовки прямого объявления этого стиля: "entity_fwd.hpp", "entity.hpp" и "entity.cpp".Дополнительно также «entity_test.cpp», который должен использовать заголовок «entity.hpp».«entity.hpp», однако, должен использовать «entity_fwd.hpp» в качестве основного заголовка .
Итак, мне действительно нужен способ указать дополнительные заголовки в качестве main, вместо дополнительных исходных файлов, использующих тот же главный заголовок .
Кто-нибудь нашел способ сделать это в формате clang?
EDIT: ОК, так что немного больше контекста.Предположим, у меня есть этот заголовок, который называется entity_fwd.hpp
:
class Entity;
class Player;
class MOB;
bool collisionTest(Entity const & e1, Entity const & e2);
Затем у меня есть нормальный заголовок определения, entity.hpp
:
#include "entity_fwd.hpp"
#include "world.hpp"
#include <vector>
class Entity {
public:
Entity(Entity const &) = delete;
virtual bool isAlive() const;
...
};
...
И, наконец, файл реализации, entity.cpp
:
#include "entity.hpp"
bool collisionTest(Entity const & e1, Entity const & e2) {
...
}
bool Entity::isAlive() const {
...
}
...
Для entity.cpp
clang-format знает , что entity.hpp
является основным заголовком для этого файла на основе основы имени заголовка;термин основной заголовок является терминологией clang-формата. основной заголовок будет помещен первым в списке включений.
Для entity.hpp
основной заголовок должен быть entity_fwd.hpp
.Я могу использовать IncludeCategories
с регулярным выражением '_fwd.h(pp)?"$'
для сортировки entity_fwd.hpp
в первую очередь, но это поместит все _fwd
заголовки на первое место, где только entity_fwd.hpp
должен получить специальную обработку.