帮助在 C++ 中自动重命名
这是我的问题:
我有一个很大的代码库,其中所有类名都以 Agui 开头。例如:
class AguiWidget
{
};
class AguiBitmap
{
};
此外,所有 hpp 和 cpp 文件也这样命名: AguiWidget.hpp
等。
该库也不使用命名空间。
所有枚举都以 Agui 开头并使用: ex:
enum AguiKeyEnum
{
AGUI_KEY_SPACE,
AGUI_KEY_ENTER
};
包含守卫也使用 ex: AGUI_WIDGET_HPP
所以,
我的任务是从整个项目(所有类和枚举)中删除所有 Agui、AGUI 引用,然后将所有类封装到命名空间 agui 中。
做到这一点最简单的方法是什么。我还需要 hpp 和 cpp 文件,使其文件名中不再包含 Agui。
如果有帮助的话,我使用 MSVC 2008 作为 IDE。
谢谢!
Here is my issue:
I have a large library of code where all of the class names begin with Agui. For example:
class AguiWidget
{
};
class AguiBitmap
{
};
also, all the hpp and cpp files are named like this also:
AguiWidget.hpp
etc.
The library also does not use a namespace.
all of the enums begin and use Agui:
ex:
enum AguiKeyEnum
{
AGUI_KEY_SPACE,
AGUI_KEY_ENTER
};
The include guards also use ex:
AGUI_WIDGET_HPP
So,
My task is to remove all the Agui, AGUI references from the entire project (all the classes and enums), then to encapsulate all the classes into namespace agui.
What would be the easiest way to do this. I also need the hpp and cpp files to no longer have Agui in the filename.
I use MSVC 2008 as an IDE if that helps.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要使用全局查找和替换工具。如果您有 Visual Studio 2008,那么它已经是内置的。重命名所有类和命名空间后,请使用其他工具重命名文件或构建脚本来为您完成此操作。
You need to use a global find and replace tool. If you have Visual Studio 2008, then it is already built-in. Once you rename all the classes and namespaces, then use another tool to rename the files or build a script to do it for you.
作为 Linux 用户(您不是,但您可以使用 Cygwin 或单独的计算机),我会使用程序
sed
来去除前缀。我将从这里开始,然后查看差异与源代码控制:然后,重命名文件:
然后剩下的就是添加命名空间。您也可以使用 sed 来完成此操作,但如果文件数量不大,我只会手动完成。不过,添加命名空间右大括号很简单:
根据现有代码的结构,您可能需要更加小心地添加左大括号。
哦,看一下,Windows 版 sed:http://gnuwin32.sourceforge.net/packages/sed。 htm(我没用过这个)。
As a Linux user (which you aren't, but you could use Cygwin or a separate machine), I'd use the program
sed
to strip the prefixes. I'd start with this, then review the diffs vs. source control:Then, renaming the files:
Then all that's left is to add namespacing. You could probably get this done using sed as well, but if the number of files is not huge I'd just do it by hand. The namespace closing braces are trivial to add though:
The opening braces you might want to take a little more care to add, depending on your existing code's structure.
Oh, and look, sed for Windows: http://gnuwin32.sourceforge.net/packages/sed.htm (I haven't used this).
我建议使用
cygwin + 递归查找 + 脚本 - 使用 sed 更改名称,mv 更改文件
或弄清楚如何在 powershell 中执行等效操作。
使用正确的正则表达式应该可以正常工作。
确保在编辑之前复制整个目录结构,因为可能需要几次迭代来调试。
I would suggest either using
cygwin + recursive find + script - use sed for changing names, mv to change files
or figuring how to do the equivalent in powershell.
With the right regular expressions it should work fine.
Make sure to copy the entire directory structure before editing, as it may take a few iterations to debug.