c++ - 源文件组织

标签 c++ path include

我在组织源文件时遇到了一些麻烦。

我有自己的一小部分代码,但数量在不断增加,我想在各种项目中使用这些代码。文件和文件夹布局是这样的:

库\sub1\source.h

库\sub1\source.cpp

库\sub2\source.h

库\sub2\source.cpp

我的一个问题是我想根据需要在我的其他项目中包含此代码。到目前为止,我已经使用绝对路径指向库代码,但必须有更好的方法。

此外,我需要将我使用的每个库文件添加到项目的文件 Visual Studio 中,以便它能够正确编译。

简而言之,我的问题是如何解决这个问题?处理上述情况的正确/最佳方法是什么。

最佳答案

一般来说,您不应该将库中的源文件直接添加到其他项目中。将它们单独编译为一个库并使用它们。

为了组织库的目录结构本身,现在我决定采用如下结构

  • library1/widget.h
  • library1/private/onlyinlib.h
  • library1/private/widget.cpp

(如果适用)

  • library1/private/resources/widget.jpg
  • library1/private/project/widget.xcode

我将所有 header 直接放在库路径中,并有一个子文件夹 private,它将包含仅供库使用但永远不应共享/公开的所有内容。

最大的优势是我开始的每个项目只需要一个指向包含我的库的目录的包含路径,然后每个(公共(public))包含都像这样完成

#include "library1/widget.h"

私有(private)包含很简单

#include "onlyinlib.h"

这有很多优点:

  • 如果引入了新的库,就不会为了使 header “可见”而扰乱项目/编译器设置。
  • 迁移到其他编译器/平台也非常简单。
  • header 自动“命名空间”,即通过也包含部分路径,几乎不可能与包含的名称发生冲突
  • header 的来源以及 header 是否是公共(public)接口(interface)的一部分都一目了然

关于c++ - 源文件组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383174/

相关文章:

include - Varnish 包含无法在同一目录中找到文件

c++ - 使用 "extern"关键字而没有 #include "file.h"

共享库中的 c++ 静态变量和更好的可见性

c++ - vector 的最后一项不显示/vector 索引问题

c++ - std::hardware_delta_interference_size 在哪里?

path - 如何在 Inno Setup 中获取安装程序路径?

javascript - 通过字符串路径访问嵌套的 JavaScript 对象和数组

java - 即使指定了 Path 变量,如何修复 "CreateProcess error=2, The system cannot find the file specified"(跨平台)

c++ - 循环不工作

php - 我可以在 PHP 的包含中使用包含吗?