Включить порядок пересылки заголовков в формате clang - PullRequest
0 голосов
/ 10 июня 2018

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 должен получить специальную обработку.

...