Qt создатель включает паттерн охраны - PullRequest
0 голосов
/ 30 мая 2018

В Qt-Creator есть способ автоматически добавлять строку шаблона при создании нового класса?

Например:

Я создаю новый class Foo,Сгенерированный заголовочный файл:

#ifndef FOO_H
#define FOO_H

class Foo{
};

#endif FOO_H

Что бы я хотел:

#ifndef SOMETHING_FOO_H
#define SOMETHING_FOO_H

class Foo{
};

#endif SOMETHING_FOO_H

В идеале я бы хотел настроить его на основе проекта как PROJECTNAME_FOO_H или даже лучше PROJECT_NAMESPACE_FOO_H

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Мне удалось сгенерировать защиту заголовков в форме NAMESPACE_NESTEDNAMESPACE_CLASSNAME_H.Я не мог найти ничего, чтобы получить имя проекта, но в моем случае это не было проблемой, так как мое пространство имен верхнего уровня - это имя моего проекта.

После ответа @Alan Birtles я изменил класс cppмастер.Вам необходимо скопировать файлы (file.cpp, file.h, wizard.json) из установочного каталога QtCreator в ваш домашний каталог ($HOME/.config/QtProject/qtcreator/templates/wizards в Linux и macOS или %APPDATA%\QtProject\qtcreator\templates\wizards в Windows, в соответствии с документом ).Поместите их в те же подпапки (т.е. wizards/classes/cpp).

В wizard.json измените строку:

{ "key": "GUARD", "value": "%{JS: Cpp.headerGuard('%{HdrFileName}')}" },

на:

{ "key": "GUARD", "value": "%{JS: Cpp.classToHeaderGuard('%{Class}', '%{JS: Util.suffix('%{HdrFileName}')}')}" },

Обратите внимание, чтоВы можете добавить статический текст по своему вкусу:

{ "key": "GUARD", "value": "RANDOM_TEXT_%{JS: Cpp.classToHeaderGuard('%{Class}', '%{JS: Util.suffix('%{HdrFileName}')}')}_INCLUDED" },

Полные файлы можно найти здесь: https://gist.github.com/juleswh/aeacc89342bc51b19044cf1e04483357

Надеюсь, это поможет!


Iиспользовали следующие ресурсы, на случай, если они могут быть полезны:

0 голосов
/ 30 мая 2018

Вы можете редактировать шаблоны в share/qtcreator/templates/wizards/classes/cpp.

На Mac путь qt creator.app/Contents/Resources/templates/wizards/classes/cpp.

...