【问题标题】:Organizing the files of a project for multiplatform and easy-to-use [closed]为多平台和易于使用的项目组织文件[关闭]
【发布时间】:2018-07-08 16:29:50
【问题描述】:

几年前,我创建了一个 C++ 项目。我曾经使用 nano 编写代码,然后使用 Makefile 对其进行编译和链接。

我只是将所有文件放在一个目录中(包括 .cpp、.h 和 Makefile 本身)。

例如,我有一个 inc.h 文件,它包含在每个 .cpp 文件中,例如,我现在承认它不是很干净。

我想将它上传到 Github 以供任何想要使用它的人访问,但问题是我似乎找不到任何关于如何安排文件的指南 (例如,对于creating packages in R)。我尝试过使用 Code::Blocks 但我没有设法使项目工作,所以,

谁能给我指一个指南,解释如何正确组织 C++ 项目的代码和数据?

【问题讨论】:

  • 如果项目使用同一目录中的所有源,请继续。如果它获得任何牵引力(大多数项目没有),其他人总是可以重新安排事情。

标签: c++ github organization code-organization


【解决方案1】:

C++ 本身没有任何关于如何组织项目文件的样式指南。这是使包管理器如此难以实现的众多小事之一。每个开发人员都选择他们自己的组织,所以如果它适合您,只需将其保存在一个文件夹中。如果你想尝试,例如,单独的头文件和 cpp 文件夹,互联网上有一些例子,在搜索类似于“makefile headers and source in separate directory”时可以找到。

对于 makefile,您可能必须包含类似的内容

# preprocessor flags
CPPFLAGS :=  -I[path-to-headers]

在调用编译器的行中 makefile

【讨论】:

    【解决方案2】:

    C++ 项目的大部分规则都是特定于项目的,这可能是没有明确指南的主要原因。我能想到的一些最通用的建议(可能与您的情况无关):

    • 您的用户是否需要包含您的头文件?在这种情况下,将此类标头放入单独的“包含”文件夹中。基本原理:避免包含错误标头(不属于您的 API)的错误,并简化对公共 API 的分析。我不明白将所有标头与 .cpp 文件分开放置的规则(例如 VisualStudio 项目的默认过滤器),某些标头仅供内部使用。
    • 为每个受支持的架构和配置构建到不同的文件夹(例如,共享库和可执行文件的“bin”或静态库的“lib”)。例如:

      垃圾箱
      |-- 调试
      |--|-- x32
      |--|-- x64
      |-- 发布
      |--|-- x32
      |--|-- x64
      ...
      基本原理:从外部代码简化分发和使用。

    • 您问“如何正确组织代码和数据”。如果您允许提供一些外部配置,或者只是一般数据,请确保您允许指定其位置,而不是仅仅对其进行硬编码。不过,硬编码默认位置很好。理想情况下,如果这对您的情况有意义,您的 API 允许在运行时指定位置,或者编译时选项,例如作为构建脚本的参数。理由:在不同的数据集/配置上进行测试会容易得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2014-03-04
      • 2014-08-02
      • 2015-07-19
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多