组织项目的多平台和易于使用的文件



几年前,我创建了一个C++项目。我曾经使用 nano 编写代码,并使用 Makefile 编译和链接它。

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

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

我想将其上传到 Github,以便任何想要使用它的人都可以访问它,问题是我似乎找不到任何关于我应该如何排列文件的指南(例如,用于在 R 中创建包(。我尝试过使用Code::Blocks,但我还没有设法使项目工作,所以,

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

C++本身没有任何关于如何组织项目文件的风格指南。这是使包管理器难以实现的众多小事情之一。每个开发人员都会选择自己的组织,因此,如果它适合您,只需将其保存在一个文件夹中即可。如果您想尝试,例如,单独的标头和 cpp 文件夹,可以在互联网上找到类似于"makefile 标头和源代码在单独的目录中"的内容时找到的示例。

对于生成文件,您可能必须包含类似

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

调用编译器生成文件的行中

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

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

    bin|-- 调试|--|-- x32|--|--x64
    |-- 发布
    |--|-- x32

    |--|-- x64
    ...


    基本原理:简化外部代码的分发和使用。

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

最新更新