Qt Creator 包括保护模式

Qt creator include guard pattern

Qt-Creator 中有一种方法可以在创建新的 class?

时自动添加模板字符串

例如:

我创建了新的 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

您可以在 share/qtcreator/templates/wizards/classes/cpp 中编辑模板。

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

我实现了生成 header 形式 NAMESPACE_NESTEDNAMESPACE_CLASSNAME_H 的守卫。我找不到任何东西来获取项目名称,但在我的情况下这不是问题,因为我的顶级命名空间是我的项目名称。

根据@Alan Birtles 的回答,我修改了 cpp class 向导。您需要将文件 (file.cppfile.hwizard.json) 从 QtCreator 安装目录复制到您的主目录($HOME/.config/QtProject/qtcreator/templates/wizards on Linux 和 macOS 或 %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

希望对您有所帮助!


我使用了以下资源,以防它可能有用: