【发布时间】:2016-06-23 05:39:30
【问题描述】:
我有一个 Visual Studio 2015 C++ 项目,其中引用了一些第 3 方免费库。
只是为了减少编译时间(目前为 5 - 90 秒),
我想将项目拆分为许多较小的项目。
在准备中,我已经在解决方案资源管理器中创建了过滤器。
过滤器显示了我项目的顶级结构 - 分为 tier :-
Tier 1 - my core library, no reference to outside, rarely change
Tier 2a - my custom encapsulator for external library "A"
Tier 2b - my custom encapsulator for external library "B"
...
note: all Tier2 #include Tier1 , rarely change
Tier 3 - business logic that rarely change, #include Tier1&2
Tier 4 - business logic that often change , #include Tier1&2&3
问题:如何轻松将这个项目拆分成多个项目?
例如几乎很简单,只需单击过滤器然后选择“提取到新项目”
我已经阅读了一些资料——它们的解释适用于如何从头开始创建,而不是现有项目。
似乎我还必须为某些单独的文件添加一些行。
#if defined DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif
我有>100个文件,所以不太实用。
我用谷歌搜索了“split visual studio c++ project”,但没有找到很多结果。
相关问题:不解释“如何”
How do you split a Visual Studio Solution?
外部链接:都有#define DECLDIR __declspec(dllexport)
http://www.codeguru.com/cpp/cpp/cpp_mfc/tutorials/article.php/c9855/DLL-Tutorial-For-Beginners.htm
https://manski.net/2011/11/creating-a-dll-project/
【问题讨论】:
-
我知道没有简单的方法。我通常复制整个项目文件夹,重命名 vcxproj 文件,将所有 refs 重命名为 vcxproj 文件中的项目名称(使用记事本++),然后将新项目添加到解决方案中并删除所有我不想要的文件在那里。习惯后大约需要 3 分钟...不太理想,但仍然...
-
@Baldrick 谢谢!最多3分钟是很少的! ....您能否解释一下“将所有引用重命名为 vcxproj 文件中的项目名称”?如果我有 pj1.vcxproj 并想创建库 pj2,粗略地说,我将不得不编辑 pj1.vcxproj 中的所有单词“pj1”,对吗?我只找到了 1 个地方
pj1 ,你是这个意思吗? ......我还需要手动对每个文件进行 DECLDIR declspec(dllexport) 吗? -
是的,基本上。有多少 refs 取决于项目中的内容,但重命名您找到的所有引用,并尝试将其添加回解决方案。如果你把它搞砸了,它将无法加载。这对“DECLDIR”部分没有帮助 - 因为您可能需要某种宏或脚本来处理您的文件并将其添加。
标签: c++ visual-studio projects-and-solutions