VC2010 C ++ - 组织源文件

时间:2011-03-16 05:26:44

标签: visual-studio visual-studio-2010

我对如何在VC 2010 C ++项目中组织源文件有一些疑问。包含的默认过滤器最终不够,我将会有很多.cpp和.hpp文件,所以它会变得很乱。我想在项目的根目录下创建一个名为“source”的文件夹,然后在“source”中为我想要使用的各种源文件类别创建文件夹。当我右键单击解决方案时,我只能选择添加过滤器,而不是文件夹。我可以在Windows资源管理器中手动创建文件夹,然后包含它们,但然后我失去了添加过滤器的能力。有没有办法添加新文件夹(不使用Windows资源管理器)并仍然使用过滤器?

此外,是否有类似于$(CURDIR)的东西,我可以用来包含源文件夹而不需要绝对路径?

提前感谢您的帮助

5 个答案:

答案 0 :(得分:148)

答案 1 :(得分:23)

实际上可以通过Visual Studio查看(和操作)物理文件结构,如this SO post中所述:

  

标头/源文件不是Visual Studio强加的要求。   这只是默认布局,它是虚拟的,而不是物理的。如果你   单击解决方案资源管理器中的“显示所有文件”,它将显示   文件夹树,因为它在硬盘驱动器上 - 您可以操作为   你认为合适。

答案 2 :(得分:1)

我迟到了,但我建议反对接受的答案。代码可移植性的主要原因。相反,我建议:

  1. 在visual studio之外创建文件夹和子文件夹的布局(与接受的答案相同,但接下来的点不同)。在每个子文件夹中创建一个includesrc文件夹
  2. 然后在配置属性> C / C ++>一般> “其他包含目录”(适用于所有配置和所有平台)添加单个文件夹,该文件夹是所有子文件夹的基础。
  3. 添加src文件并在这些子文件夹中包含文件。

  4. 最后,使用 relatives 路径将每个头文件包含在此基本文件夹中。

  5. 要明确:如果项目布局如下:

    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)

使用CMakePremake等构建系统可以在组织文件时提供帮助,并且还有一个额外的好处,即可以帮助您将代码移植到其他平台。 Here是关于这个主题的一个很好的演讲。

由于它可能对某人有所帮助,我还应该补充说,将源文件与项目文件(*.vcxproj)分开会使创建新文件变得更加困难,因为默认情况下Visual Studio需要创建与项目位于同一文件夹中的新文件。到目前为止我找到的这个问题的解决方法是使用Visual Assists扩展,因为它允许添加相对于目录或当前打开文件的新文件。有关详细说明,请参阅this帖子。

答案 4 :(得分:-2)

如果您确实想要在与源代码不同的位置创建解决方案和项目,则可以更改工作目录:

Project > Properties > Configuration Properties > Debugging > Working Directory