我对如何在VC 2010 C ++项目中组织源文件有一些疑问。包含的默认过滤器最终不够,我将会有很多.cpp和.hpp文件,所以它会变得很乱。我想在项目的根目录下创建一个名为“source”的文件夹,然后在“source”中为我想要使用的各种源文件类别创建文件夹。当我右键单击解决方案时,我只能选择添加过滤器,而不是文件夹。我可以在Windows资源管理器中手动创建文件夹,然后包含它们,但然后我失去了添加过滤器的能力。有没有办法添加新文件夹(不使用Windows资源管理器)并仍然使用过滤器?
此外,是否有类似于$(CURDIR)的东西,我可以用来包含源文件夹而不需要绝对路径?
提前感谢您的帮助
答案 0 :(得分:148)
答案 1 :(得分:23)
实际上可以通过Visual Studio查看(和操作)物理文件结构,如this SO post中所述:
标头/源文件不是Visual Studio强加的要求。 这只是默认布局,它是虚拟的,而不是物理的。如果你 单击解决方案资源管理器中的“显示所有文件”,它将显示 文件夹树,因为它在硬盘驱动器上 - 您可以操作为 你认为合适。
答案 2 :(得分:1)
我迟到了,但我建议反对接受的答案。代码可移植性的主要原因。相反,我建议:
include
和src
文件夹添加src文件并在这些子文件夹中包含文件。
最后,使用 relatives 路径将每个头文件包含在此基本文件夹中。
要明确:如果项目布局如下:
MyProjet
Math
include
random.h
functions.h
src
random.cpp
functions.cpp
Probability
include
normal.h
src
normal.cpp
你应该在functions.cpp
中包含以下包含声明:
#include"Math/include/functions.h"
如果您还需要在functions.cpp中使用normal
代码,那么functions.cpp
的顶部应如下所示:
#include"Math/include/functions.h"
#include"Probability/include/normal.h"
通过这样做,您将能够毫不费力地在另一个项目(B)中重复使用Math子文件夹:只需将MyProject
基本文件夹添加到项目B的“其他包含目录”中即可。
关键是只有一个基本文件夹进入“附加” 包括目录“属性。
ps:VS 2015的intellisense功能有助于编写#include...
答案 3 :(得分:0)
使用CMake或Premake等构建系统可以在组织文件时提供帮助,并且还有一个额外的好处,即可以帮助您将代码移植到其他平台。 Here是关于这个主题的一个很好的演讲。
由于它可能对某人有所帮助,我还应该补充说,将源文件与项目文件(*.vcxproj
)分开会使创建新文件变得更加困难,因为默认情况下Visual Studio需要创建与项目位于同一文件夹中的新文件。到目前为止我找到的这个问题的解决方法是使用Visual Assists扩展,因为它允许添加相对于目录或当前打开文件的新文件。有关详细说明,请参阅this帖子。
答案 4 :(得分:-2)
如果您确实想要在与源代码不同的位置创建解决方案和项目,则可以更改工作目录:
Project > Properties > Configuration Properties > Debugging > Working Directory