C++头文件用于共享库,应安装哪些头文件?(最佳实践)

4
创建一个共享的C++库时,安装头文件的最佳实践是什么?更具体地说,我有以下两个问题:
  1. 我正在开发一个具有复杂相互依赖关系的头文件的共享库项目,那么我是否只需安装所有头文件,还是有一种限制所需头文件数量的方法?
  2. 我计划将头文件安装到 /usr/local/include 的子目录中,以避免污染顶级目录,这样做是正确的吗?
其他信息:我只想为库提供接口。该项目是一个自动工具项目,我在我的 Makefile.am 文件中使用 pkginclude_HEADERS 命令将头文件安装到适当的子目录中。我实际上正在将此项目从使用静态库的程序转换为链接到库的共享库和小型程序。人们不太可能仅使用库的一小部分而不是整个库。
编辑:
针对关闭投票的回应,认为本问题基于意见,我也认为有效的答案是这纯粹是项目特定的或者是品味问题,并且没有公认的最佳实践,但我怀疑这种情况并非如此,否则我就不会问了。
2个回答

4

一种常见的方法是将公共头文件放置在一个include目录下,而其余的源码文件(包括hpp和cpp文件)则放在一个src目录下。例如,假设你正在开发名为foo的项目,可能的文件层次结构如下:

foo
    include
        foo
            x.hpp
            y.hpp
    src
        x.cpp
        y.cpp
        z.cpp
        z.hpp

在这种情况下,您可以将include目录添加到包含路径中,然后您就可以像这样包含公共头文件:#include <foo/x.hpp>

抱歉,我不确定您是否指的是文件安装在系统上的情况?我的问题是关于库头文件的安装(例如在/usr/local/include中),而不是源代码的组织(当我运行make install时,autotools可以将文件放在我指定的任何位置)。如果我误解了您的意思,请见谅。 - crobar

0

我想分享我的想法,但我不确定是否有正确的答案:)。

A:

  1. 如果头文件具有复杂的相互依赖关系,最安全的方法是将它们全部安装。或者您可能想阅读源代码并清除相互依赖关系。
  2. 将所有标题放在一个自由裁量中是正确的做法。:)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接