共享库的C++头文件,要安装哪些头?(最佳实践)
C++ Header files for shared library, which headers to install? (best practice)
创建共享C++库时,安装头文件的最佳做法是什么?更具体地说,我有以下两个问题:
-
我正在处理一个共享库项目,该项目的标头具有复杂的相互依赖性,所以我是简单地全部安装它们,还是有办法限制所需的标头数量?
-
我计划将头安装到/usr/local/include的子目录中,以避免污染顶级目录,这样做正确吗?
其他信息:我只是真的想提供一个图书馆的接口。该项目是一个自动工具项目,我在Makefile.am文件中使用pkginclude_HEADERS
命令将头安装在相应的子目录中。实际上,我正在将这个项目从一个使用静态库的程序转换为一个共享库和链接到库的小程序。人们不太可能只使用图书馆的一小部分,而不是整个图书馆。
编辑:
作为对以意见为基础的投票的回应,我也会考虑一个有效的答案,即这纯粹是针对项目的,或者说是根据口味,并且没有公认的最佳实践,但我怀疑情况是否如此,或者我不会问。
一种常见的方法是将公共头文件放在include
目录中,将其余源文件(hpp和cpp)放在src
目录中。例如,假设您正在处理一个名为foo
的项目。一个可能的文件层次结构如下:
foo
include
foo
x.hpp
y.hpp
src
x.cpp
y.cpp
z.cpp
z.hpp
在这种情况下,您可以简单地将include
目录添加到include路径中,然后您就可以包含这样的公共头文件:#include <foo/x.hpp>
。
我想分享我的想法,但我不确定我是否有正确的答案:)。
A:
- 如果标头具有复杂的相互依赖关系,那么简单地将它们全部安装会更安全。或者您可能想要读取源代码并清除相互依赖关系
- 把所有的标题放在一个自由裁量的标题中是正确的。:)
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在Ubuntu 16.04上安装Cilk时出现问题
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 在c代码之间共享数据的最佳方式
- 使用std::source_location报告错误的最佳实践
- C++:如何在CLion IDE中安装Boost
- 派生类销毁的最佳实践是什么
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 代表软件包安装和系统依赖关系的最佳数据结构
- 在Windows中获取安装前缀的最佳方法是什么
- 在Debian Jessie上安装多个g++工具链的最佳方式是什么
- 共享库的C++头文件,要安装哪些头?(最佳实践)
- 通过组策略安装 VC++ 可再发行组件的最佳方法是什么?