构建C ++应用程序(目录和文件夹)

要求莫斯塔法

我来自Web开发,我需要问C ++程序员如何管理基于模型的项目的目录?

我已经在Visual Studio C ++解决方案管理器中构造了我的项目,如下所示:

-> Header Files
   --> Models
       DatabaseEngine.interface.h

-> Resources

-> Source Files
   --> Models
       DatabaseEngine.cpp
   --> Application
       Core.cpp
       Bootstrap.cpp
   --> FrontController
       ---

我已经完全复制了Headers目录下Model的目录,并为其加上了".interface"名称,因为它们是接口,并且它们的真正实现位于的镜像路径下Sources

我有一些自定义类型,例如DBConnection我不知道将它们放在哪里?我应该将它们放在一个名为的文件中,CustomTypes.cpp还是应该将它们与相关的父模型/类/对象相关联?

我关心的是约定和标准。

至N

没有任何标准,C ++是一个非常开放的世界,您将看到;

一切都是为了使最适合您的东西,但通常从已经尝试过的人那里获得建议就不会受到伤害。就个人而言,我尝试遵循这一惯例

/ProjectName
    /src
        /libs <- Libraries go here
            /Models <- Assuming you want to make a library out of your models
                User.h
                User.cpp
                ... <- Putting header and implementations together is not a problem,
                       they should be edited in parallel oftentimes
                /Utilities <- Should your library grow, you can make it more modular
                              by creating subdirectories
                              (that could contain subdirectories, etc.)
                    DBConnection.h
                    DBConnection.cpp

        /apps <- define your applications here.
                 They probably rely on classes and functions defined in one or several of your libaries define above.
            /ApplicationA
                Core.h
                Core.cpp
                Bootstrap.h
                Bootstrap.cpp
    /resources
    /doc

    # Below are 'environment specific' folders.
    /vs <- Visual studio project files
    /xcode <- Xcode project files

备注

标头和实现

  • 头文件(.h或.hpp或无扩展名)确实定义了将在实现文件(.cpp)中实现的接口。但是,给两者都赋予相同的基名,并且仅通过扩展名(或不存在)来区分它们是很常见的。添加一个额外的.interface部件可能不会花很多钱,并且可能会使您的IDE(或其他工具)感到困惑,否则它们可以将头文件与其实现文件相关联。
  • 出于相同的原因(不要混淆某些工具),将两个文件放在同一文件夹中会更容易:无论如何它们都是密切相关的。
    • 另外,如果以后需要更改文件夹结构(例如,进行模块化),则仅放置一个子文件夹(而不是您的方法中的两个文件夹)也可以使工作变得更轻松。

 自定义类型

C ++提供的程序员定义自定义类型。在它们自己的头文件/实现文件对中定义自定义类型是很常见的。在您的情况下,DBConnection.h定义一个DBConnection类,该类的(非内联)方法将在中实现DBConnection.cpp

从个性上讲,我不怕为每种类型创建一对文件,这使将来的您和其他程序员更容易找到定义类型的文件。您可以通过制作子文件夹来管理数量不断增长的文件,这将迫使您模块化设计。

当然,有时您需要定义一个非常短的类,与另一个类紧密耦合。如果您认为两个类之间的链接足够牢固,则由您决定将这两个类都包含在一个共同的文件对中。

可扩展性

可能不是所有项目都需要关注,但是此目录结构在环境和构建管理方面可以扩展。将项目文件保留在顶层的单独文件夹中,并定义源代码外的构建,可以为其他IDE创建项目文件。

如果您应该采用这种方式,此层次结构也很容易接受CMake构建管理。CMakeLists.txt文件将被放置在顶层,此文件调用(项目名/下)add_subdirectory(src),继而caling一个CMakeLists.txt在项目名/ SRC /等

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C#文件夹,子文件夹和文件未出现在C#Windows应用程序目录路径比较代码中

在构建Android应用程序之前,将jars从其他目录拉到libs文件夹

如何根据文件夹名称识别最新的应用程序构建文件夹

gradle:禁止在多项目应用程序的根目录下创建构建文件夹

dotnet核心应用程序,如何使用appsettings文件构建到输出文件夹

编译WPF应用程序语言文件夹时,会将文件夹复制到构建文件夹

将构建文件夹发布到wwwroot后,Web应用程序未更新

Webpack - 构建我的应用程序后清空目标文件夹

如何将节点应用程序的内容“构建”到名为“ dist”的文件夹中

移动构建文件夹时电子应用程序错误

如何压缩'dist'文件夹作为ember-cli应用程序的最终构建步骤

如何通过Electron-builder使用资产文件夹构建电子应用程序

React 应用程序生产构建静态文件夹路径更改

如何强制Console应用程序项目在构建中包含文件夹?

在C#Windows应用程序中的FTP文件夹中创建子文件夹

ASP C#中来自fileUpload的应用程序文件夹中的SaveAs()文件

C#应用程序将文件从GAC复制到执行文件夹

如何构建将音频文件下载到本地文件夹或从Silverlight应用程序下载文件夹的功能?

创建预构建事件以将文件复制到Android应用程序中的资产文件夹

无法处理C#中应用程序文件夹路径中的空白

便携式应用程序的 C# 存储文件夹位置

从运行 C# Windows 应用程序的 Docker 容器访问主机文件夹路径

在我的应用程序的资产目录中列出所有文件和文件夹(以及子文件夹),并检查资产是文件还是文件夹

如何将包含多个jar的外部文件夹添加到Web应用程序的Maven构建中?

使用React Native构建两个孪生应用程序的最佳文件夹结构是什么?

Docker构建一个.net核心应用程序,该应用程序引用不同文件夹中的项目

应用程序和文件夹图标的出现

从构建中排除文件夹和文件

c#内置函数获取bin文件夹的路径,而不是bin\Debug或bin\Release等应用程序文件夹