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

时间:2013-11-18 11:19:34

标签: c++ deployment install shared-libraries header-files

创建共享C ++库时,安装头文件的最佳做法是什么?更具体地说,我有以下两个问题:

  1. 我正在使用具有复杂相互依赖性的标题的共享库项目,所以我只是简单地安装它们,还是有办法限制所需的标题数量?

  2. 我计划将标题安装到例如子目录/ usr / local / include以避免污染顶级目录,这是正确的做法吗?

  3. 其他信息:我真的只想提供一个库的接口。该项目是一个autotools项目,我在Makefile.am文件中使用pkginclude_HEADERS命令将标头安装在相应的子目录中。我实际上是将这个项目从使用静态库的程序转换为共享库和链接到库的小程序。人们不太可能只使用图书馆的一小部分而不是整个图书馆。

    编辑:

    作为对基于意见的结束投票的回应,我也会考虑一个有效的答案,这纯粹是项目特定的,或者是品尝,并且没有公认的最佳实践,但我怀疑这是案件,或者我不会问。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

A:

  1. 如果标头具有复杂的相互依赖关系,那么简单地安装它们会更安全。或者您可能希望阅读源代码并清除相互依赖关系。
  2. 将所有标题放在一个自由裁量权中是正确的。 :)