Qt创建者包括守卫模式

时间:2018-05-30 16:21:54

标签: c++ qt qt-creator include-guards

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 :(得分:1)

您可以在share/qtcreator/templates/wizards/classes/cpp

中修改模板

在Mac上,路径为qt creator.app/Contents/Resources/templates/wizards/classes/cpp

答案 1 :(得分:0)

我实现了以NAMESPACE_NESTEDNAMESPACE_CLASSNAME_H格式生成标头后卫。我找不到任何可以获取项目名称的东西,但是对我来说这不是问题,因为我的顶级名称空间是我的项目名称。

在回答@Alan Birtles之后,我修改了cpp类向导。您需要将文件(file.cppfile.hwizard.json)从QtCreator安装目录复制到您的主目录(Linux和macOS上的$HOME/.config/QtProject/qtcreator/templates/wizards%APPDATA%\QtProject\qtcreator\templates\wizards在Windows上,请按doc)。将它们放在相同的子文件夹中(即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

希望这会有所帮助!


在可能有用的情况下,我使用了以下资源: