c++ Qt创建器包括防护模式

zsohkypk  于 2023-03-09  发布在  其他
关注(0)|答案(2)|浏览(131)
  • 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

4jb9z9bj

4jb9z9bj1#

我实现了生成NAMESPACE_NESTEDNAMESPACE_CLASSNAME_H格式的标头保护。我找不到任何东西来获取项目名称,但在我的情况下,这不是问题,因为我的顶级命名空间是我的项目名称。
根据@Alan Birtles的回答,我修改了cpp类向导,你需要把QtCreator安装目录中的文件(file.cppfile.hwizard.json)复制到你的主目录(根据文档,Linux和macOS上是$HOME/.config/QtProject/qtcreator/templates/wizards,Windows上是%APPDATA%\QtProject\qtcreator\templates\wizards),把它们放在同一个子文件夹中(即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
希望这有帮助!
我使用了以下资源,以防可能有用:

wh6knrhe

wh6knrhe2#

您可以在share/qtcreator/templates/wizards/classes/cpp中编辑模板。
在Mac上,路径为qt creator.app/Contents/Resources/templates/wizards/classes/cpp

相关问题