gpt4 book ai didi

c++ - 将过滤器中的所有 .cpp 和 .h 移动到另一个项目并更正它们的文件夹位置

转载 作者:可可西里 更新时间:2023-11-01 17:59:58 57 4
gpt4 key购买 nike

这是 Solution Explorer 中显示的我在 Visual Studio 中的项目的过滤器:-

ProjectName1
== References, External Dependencies, Header Files, Resource Files
== Source Files
==== myFilter01
------ K.h (system folder = `D:\ProjectName1\K.h`)
------ K.cpp (system folder = `D:\ProjectName1\K.cpp`)
==== myFilter02
====== subFilter2_1
--------- B.h (system folder = `D:\ProjectName1\B.h`)
--------- B.cpp (system folder = `D:\ProjectName1\B.cpp`)
========= subFilter2_2
----------- C.h (system folder = `D:\ProjectName1\C.h`)
----------- C.cpp (system folder = `D:\ProjectName1\C.cpp`)
ProjectName2
== ... (some existing filter/files)

(在实际情况下,所有过滤器都包含很多子过滤器和文件。)

问题

如何:

  • 将所有 .h.cpp 文件(BC)移动到 myFilter02ProjectName2文件夹(例如 D:\ProjectName2)
  • 不要更改过滤器的外观(例如,C 必须仍在 subFilter2_1\subFilter2_2 中)
  • 只需点击几下即可完成(即不依赖于文件/子过滤器的数量)即 O(1)

这是预期的结果:-

ProjectName1
== References, External Dependencies, Header Files, Resource Files
== Source Files
==== myFilter01
------ K.h (system folder = `D:\ProjectName1\K.h` )
------ K.cpp (system folder = `D:\ProjectName1\K.cpp` )
==== myFilter02
ProjectName2
== ... (some existing filter/files)
== subFilter2_1
----- B.h (system folder = `D:\ProjectName2\B.h` )
----- B.cpp (system folder = `D:\ProjectName2\B.cpp` )
===== subFilter2_2
------- C.h (system folder = `D:\ProjectName2\C.h` )
------- C.cpp (system folder = `D:\ProjectName2\C.cpp` )

可以手动为每个sub-sub-sub-filter+添加现有文件,但是很繁琐。

我试图右键单击过滤器/文件,但没有找到这样的功能。
我目前不使用任何 Microsoft 的源代码控制/存储库(以防万一)。

注意:过滤器上的正常拖放不会将文件移动到另一个项目的文件夹
它只是使移动的文件成为原始位置 (D:\ProjectName1\) 的快捷方式

热键?插入?脚本?
我真的必须创建一个程序来做这个特定的事情吗?

询问几天后,我使用 RapidXML 用 C++ 对其进行了编码~ 500-1000 行。
我必须编辑两个项目的 .vcxproj.filters.vcxproj,并移动一些系统文件。
不过,我仍然找不到关于这个问题的答案。

编辑

(收到 Hans Passant 和 Prab 的建议后,谢谢!)
由于这些原因,我想使用过滤器而不是文件夹:-

  • 源代码控制更容易,因为所有源文件都在同一个目录中。
  • 在 Visual Studio 中,我可以在不同的过滤器 中移动文件,而不是在文件夹 中移动文件。
  • 使用过滤器,我不必为每个文件夹延长#include "../myFilter01/K.h" 或添加其他包含目录。我可以简单地 #include "K.h"
  • 如果我更改文件在过滤器中的位置,我不必重构它。
    如果更改文件夹,我必须重构代码。
  • 我可以使用非常奇怪的字符,例如=◆██myFilter01██◆= 用于过滤器而不是文件夹。这是我的口味。

我不想

  • 使用文件夹而不是过滤器:除了难以重新创建许多文件夹和手动移动我的 .cpp/.h 文件外,我还会遇到上述缺点。
  • 使用与过滤器具有相同结构的文件夹:我必须手动将其保持同步(一直 - 乏味)。我仍然会得到一些上述的缺点。

总而言之,使用 folder 而不是 filter 给我带来的新麻烦多于它解决的问题。

最佳答案

这不是一键式解决方案,但可以比手动更快地完成。

  1. 找出需要复制的文件。为此,将过滤器从一个项目移动到另一个项目。然后切换到第一个项目的目录 View (显示所有文件)并复制但不复制带有红色小指示符的文件(不包含在项目中的文件)。现在返回两个项目的过滤器 View 并将过滤器移回第一个项目。之后将两个项目都切换到目录 View 并传递第二个项目。

  2. 现在我们需要创建正确的过滤器。将文件从源和 header 过滤器移动到第二个项目中的另一个过滤器。卸载这两个项目。打开第一个和第二个项目的 .filters 文件,从第一个文件复制到第二个,除了“源文件”、“头文件”、“资源文件”之外的所有过滤器标签。接下来从第二个文件中删除所有以源或标题开头的标签。现在从第二个 ItemGroup 复制整个内容并将其传递给第二个文件第二个 ItemGroup。保存第二个文件。

  3. 在这一点上,您应该拥有没有不必要文件的第一个项目过滤器树的拷贝,现在只需将您想要的内容移动到更正的位置即可。

在第一个项目中创建单个树是有帮助的。

关于c++ - 将过滤器中的所有 .cpp 和 .h 移动到另一个项目并更正它们的文件夹位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42968087/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com