【问题标题】:Default folder setup for a large project大型项目的默认文件夹设置
【发布时间】:2019-06-15 12:01:15
【问题描述】:

当我尝试学习 C++ 时,我开始了一个更大的项目,我尝试使用类以避免混乱的 main.cpp 文件。这意味着我正在创建更多的.cpp 文件,这些文件与main.cpp 文件放在同一文件夹中。这也导致了一个混乱的目录,所以我尝试通过在两个链接后面添加文件夹来管理我的文件:

我的问题如下:

  • 是否存在用于创建 C++ 项目的标准,该标准用于 工作场所还​​是每个项目都是主观创建的?
  • 如果标准不存在,是否有任何不良做法应 创建文件夹结构时要避免?
  • 我可以创建一个文件夹结构来放置所有标题(.h)
    一个目录中的文件和另一个目录中的所有源文件(.cpp) 目录如C:\headers\header.hC:\source\main.cpp 到 在我的包含使用 #define HEADER "/path to header" 然后 不知何故#include HEADER "aheader.h" 这意味着我不 每次包含标头时都需要将路径写入 头目录,而不是在包含之前写 HEADER?

例子:

代替:

#include "c:\headers\header.h"
#include "c:\headers\anotherheader.h"

用途:

#define HEADER "c:\headers\"
#include HEADER "header.h"
#include HEADER "anotherheader.h"

我问这个是因为我想在学习用 C++ 编写代码时避免所有不好的做法,这样我以后就不会犯错误了。由于我没有工作经验,我不知道我在网上找到的指南是否实用。

我目前的结构:

【问题讨论】:

    标签: c++ directory


    【解决方案1】:

    是否存在用于创建 C++ 项目的标准? 工作场所还​​是每个项目都是主观创建的?

    不,您可以在不同的项目中找到不同的结构。

    如果不存在标准,是否有任何不良做法应该 创建文件夹结构时要避免?

    你应该:

    • 将编译后的文件放在不同的文件夹中(可能是 bin)。
    • 在不同文件夹中的不同逻辑模块中组织您的项目。
    • 为非代码文件(makefile、gitignore 等)使用根文件夹。
    • 仅使用小写名称以避免愚蠢的错误。

    你不应该:

    • 使用绝对路径。

    我可以创建一个文件夹结构来放置所有标题 (.h) 一个目录中的文件和另一个目录中的所有源文件 (.cpp),例如 C:\headers\header.h 和 C:\source\main.cpp 在我的包含中使用 #define HEADER "/path to header"然后以某种方式#include HEADER“aheader.h”这意味着我不需要每次包含头文件时都写入头文件目录的路径,而是在包含之前写入头文件?

    不,那真的很糟糕。

    我不喜欢为源文件/头文件使用不同的文件夹,但如果你愿意的话。您可以使用包含路径(-l 标志)来解决问题。

    所以你会使用:

    #include <header.h>
    #include <anotherheader.h>
    

    这很有效,因为您在编译时包含了该文件夹:

    g++ -l "../headers" enemy.cpp
    

    任何明智的 IDE 都会为您做到这一点。或者你可以在你的 makefile 上做任何适合你的事情。

    【讨论】:

    • 那么为所有源和标题使用一个文件夹是要走的路吗?如果您想使用模块或类似的东西怎么办,使用我当前使用的结构不是很好吗?我为每个源文件和 h 文件都有一个文件夹?
    • @darclader 任何模块都应该有自己的文件夹。我的意思是,.cpp 和 .h 文件应该在同一个文件夹中。
    • 您看到我在问题中包含的图像了吗?对于 test.cpp 与 test.h 位于同一文件夹中的每个模块,我都有一个文件夹。这是继续的好方法吗? @amchacon
    • @darclader 不,您几乎为每个文件夹使用一个文件夹。太远了。
    • 相反,您应该将它们归为一般概念。比如:“引擎”、“数据库”等……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2019-11-18
    相关资源
    最近更新 更多