我在使用 Visual Studio 2012 和 C++ 开始我的第一个大型项目。我将会把源文件结构化到各自的文件夹中,但是我找不到在哪里可以像在 Windows Explorer 中一样创建真正的文件夹。所以这里是我的问题。
我该如何在我的项目中创建真正的文件夹?
我在使用 Visual Studio 2012 和 C++ 开始我的第一个大型项目。我将会把源文件结构化到各自的文件夹中,但是我找不到在哪里可以像在 Windows Explorer 中一样创建真正的文件夹。所以这里是我的问题。
我该如何在我的项目中创建真正的文件夹?
这个IDE有一个命令叫做 "新建文件夹",即使在项目+添加上下文菜单中也可以看到,当您使用“工具+自定义”查看上下文菜单时可以看到。但是,在C++ IDE中,它是隐藏的,这是有意的。
重要的是要理解为什么它被隐藏。这样可以避免您陷入麻烦,例如当您使用资源管理器创建文件夹时可能会陷入麻烦。
问题在于C++文件的构建方式。完成编译后,它们会产生一个.obj文件。该obj文件存储在其名称为项目设置的目录中。您可以通过 Project + Properties、General、Intermediate Directory设置来查看它。对于单个 .cpp 文件,它是C/C++, Output Files, Object File Name。默认值是 $(IntDir)
,这是一个宏,告诉编译器使用 Intermediate Directory 设置。在默认设置下,所有 Debug 构建的 .obj 文件都会出现在Debug子目录中。所有 Release 构建的文件都会出现在 Release 子目录中,无论 .cpp 文件存储在何处。
也许您现在已经看到了陷阱。如果您创建一个带有.cpp文件的子目录,那么当该子目录中存在与另一个子目录中相同的.cpp文件名称时,您将会遇到麻烦。它们会产生一个相同名称的 .obj 文件,其中一个会覆盖另一个,即最后编译的那个。这将产生 非常令人费解的链接错误。您将获得重复符号错误,因为最后构建的 .obj 文件被链接了两次,并且缺失覆盖的 .obj 文件的符号。
因此,请放心创建子目录,但要注意此问题。如果发生这种冲突,必须更改 .cpp 文件的 Object File Name 设置。
这有点让人烦恼,但是可以这样做:
在Visual Studio中创建新文件夹。这不会在文件系统中创建新文件夹。将新项目添加到文件夹中。选择项目的正确目录。
例如,如果您的项目位于%Documents%\Project,并且您的新文件夹名称为Folder,则可以在%Documents%\Project\Folder处将新项目添加到该文件夹中。
Visual Studio 2012会将项目放在您想要的文件夹中。如果您添加新项目,它将默认放在同一文件夹中。这就是令人烦恼的地方。如果您为所有项目项创建了3个文件夹,并尝试向每个文件夹添加新项目,则Visual Studio将尝试将所有3个项目放在文件系统中的同一位置(您最后添加新项目的文件夹),同时将项目放入正确的Visual Studio文件夹中。
可能在Visual Studio中有一个设置。我还没有找到它。我也没有认真看过。