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
最佳答案
我实现了生成 NAMESPACE_NESTEDDNAMESPACE_CLASSNAME_H 形式的 header 保护。我找不到任何东西来获取项目名称,但就我而言,这不是问题,因为我的顶级命名空间是我的项目名称。
根据@Alan Birtles 的回答,我修改了cpp 类向导。您需要将文件(file.cpp
、file.h
、wizard.json
)从 QtCreator 安装目录复制到您的主目录( $HOME/.config/QtProject/qtcreator/templates/wizards
在 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
希望这对您有所帮助!
我使用了以下资源,以防它可能有用:
关于c++ - Qt Creator 包括保护模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50609424/