将过滤器中的所有.cpp和.h移动到另一个项目并更正其文件夹位置
move all .cpp & .h in a filter to another project AND correct their folder location
这是我在Visual Studio中对解决方案资源管理器中显示的项目的过滤器:-
ProjectName1
== References, External Dependencies, Header Files, Resource Files
== Source Files
==== myFilter01
------ K.h (system folder = `D:ProjectName1K.h`)
------ K.cpp (system folder = `D:ProjectName1K.cpp`)
==== myFilter02
====== subFilter2_1
--------- B.h (system folder = `D:ProjectName1B.h`)
--------- B.cpp (system folder = `D:ProjectName1B.cpp`)
========= subFilter2_2
----------- C.h (system folder = `D:ProjectName1C.h`)
----------- C.cpp (system folder = `D:ProjectName1C.cpp`)
ProjectName2
== ... (some existing filter/files)
(在实际情况下,所有过滤器都包含大量子子过滤器和文件。
问题
如何:
- 将所有
.h
和.cpp
文件(B
和C
)移动到ProjectName2
myFilter02
的文件夹中(例如D:ProjectName2
) - 不要更改过滤器的外观(例如
C
必须还在subFilter2_1subFilter2_2
) - 只需单击几下即可完成(即不依赖于文件/子过滤器的数量),即
O(1)
这是预期的结果:-
ProjectName1
== References, External Dependencies, Header Files, Resource Files
== Source Files
==== myFilter01
------ K.h (system folder = `D:ProjectName1K.h` )
------ K.cpp (system folder = `D:ProjectName1K.cpp` )
==== myFilter02
ProjectName2
== ... (some existing filter/files)
== subFilter2_1
----- B.h (system folder = `D:ProjectName2B.h` )
----- B.cpp (system folder = `D:ProjectName2B.cpp` )
===== subFilter2_2
------- C.h (system folder = `D:ProjectName2C.h` )
------- C.cpp (system folder = `D:ProjectName2C.cpp` )
可以为每个子子过滤器+添加现有文件手动完成,但这非常繁琐。
我尝试右键单击过滤器/文件,但没有找到这样的功能。
我目前不使用任何Microsoft的源代码管理/存储库(以防万一相关)。
注意:正常的拖放过滤器不会将文件移动到另一个项目的文件夹中。
它只是使移动的文件成为原始位置的快捷方式(D:ProjectName1
)。
热键? 插件? 脚本?
我真的必须创建一个程序来做这个特定的事情吗?
问几天后,我用 RapidXML ~ 500-1000 行用 c++ 编码了它。
我必须编辑这两个项目的.vcxproj.filters
和.vcxproj
,并移动一些系统文件。
不过,我仍然找不到关于这个问题的答案。
编辑
(在收到Hans Passant和Prab的建议后,谢谢!
由于这些原因,我想使用过滤器而不是文件夹:-
- 源代码管理更容易,因为所有源文件都位于同一目录中。
- 在Visual Studio中,我可以在不同的过滤器中移动文件,而不是在文件夹周围移动文件。
- 使用 Filter,我不必为每个文件夹延长
#include "../myFilter01/K.h"
或添加额外的包含目录。 我可以简单#include "K.h"
. - 如果我更改文件在筛选器中的位置,则不必重构它。
在更改文件夹的情况下,我必须重构代码。 - 我可以使用非常奇怪的字符,例如
=◆██myFilter01██◆=
过滤器,但不文件夹。 这是我的口味。
我不想
- 使用文件夹而不是过滤器:除了难以重新创建许多文件夹并手动移动我的
.cpp/.h
文件外,我还将遭受上述缺点。 - 使用与过滤器具有相同结构的文件夹:我必须手动将其保持同步(一直 - 乏味)。 我仍然会得到上述一些缺点。
总之,使用文件夹而不是过滤器给我带来的新麻烦比它解决的要多。
这不是一键式解决方案,但可以比手动更快地完成。
-
找出需要复制的文件。为此,将过滤器从一个项目移动到另一个项目。然后切换到第一个项目的目录视图(显示所有文件),并复制但不复制带有红色小指示器的过去文件(未包含在项目中的文件)。现在返回到两个项目的筛选器视图,并将筛选器移回第一个项目。之后,将两个项目切换到目录视图并传递第二个项目。
-
现在我们需要创建正确的过滤器。将文件从源筛选器和标头筛选器移动到第二个项目中的另一个筛选器。卸载这两个项目。打开第一个和第二个项目 .filters 文件从第一个文件复制到第二个文件,除了"源文件"、"头文件"、"资源文件"之外的所有筛选器标记。接下来从第二个文件删除所有以源或标头开头的标签。现在从第二个项组复制整个内容并将其传递给第二个文件第二个项组。保存第二个文件。
-
在这一点上,您应该拥有第一个项目过滤器树的副本,而没有不必要的文件,现在只需移动要更正的位置即可。
在第一个项目中创建单个树很有帮助。
- 运行同一解决方案的另一个项目的项目
- 如何有效地将(一些)项目从一个std::map移动到另一个std::map
- 是否可以将 EXE 文件作为 lib 文件链接到另一个项目?
- 从另一个动态链接库项目调用静态库函数
- 如何在QListWidget中显示QStringList的每个项目QLabel和另一个QString?
- 如何使用另一个项目命名空间?
- 如何将一个 exe 项目链接到另一个 exe 项目中的类
- 如何在我的 cmake 项目中包含另一个 cmake 项目的头文件?
- 单元测试类无法在我要测试的同一解决方案中的另一个项目中找到类
- 在 NDK 上编译两个带有 gradle 的项目,其中一个依赖于另一个的二进制文件
- 如果我尝试将对话框从一个项目移动到另一个项目,我是否需要从 rc 文件中复制 DESIGNINFO、对话框信息和AFX_
- OpenCV:文件存储操作员">>"在一个项目中工作,但不在另一个项目中工作(在同一类上)
- LNK2019与另一个工作项目具有相同属性的项目上的错误
- Qt 创建者在我将项目移动到另一个地方后仍然使用源项目
- 如何将另一个项目中用 C 编写的源代码包含在我自己的项目中,C++在 Visual Studio 中
- 如何创建一个函数,该函数可以从一个qtreewidget中删除项目并将其添加到另一个函数
- 将过滤器中的所有.cpp和.h移动到另一个项目并更正其文件夹位置
- 在另一个项目中包括继承的类时,抽象类的链接器错误
- 创建在另一个项目中定义的类对象
- 如何在不复制的情况下将C++类从一个项目重用到另一个项目