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.cpp
、file.h
、wizard.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
希望对您有所帮助!
我使用了以下资源,以防它可能有用:
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.cpp
、file.h
、wizard.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
希望对您有所帮助!
我使用了以下资源,以防它可能有用: