头文件包含C++库中的路径 - 最佳实践

问题描述:

我对C++越来越有信心,我开始尝试使用一些第三方库。我目前正在尝试将Aquila DSP C++库集成到Qt项目中。我遇到了有关库中标题的问题。头文件包含C++库中的路径 - 最佳实践

通过图书馆导航,我注意到,一些包括使用搜索路径语句,如

#include "../../global.h" 

我正在从这个得到的是..我不应该逐渐改变中的文件结构图书馆。例如,假设我天真地删除库中的所有子文件夹,使得每个文件都包含在相同的目录中。通过这样做,我基本上会打破图书馆,我将不得不重新定义所有包含的文件路径...正确吗?

这给我带来了另一个问题。如果我在项目中使用库,那么我应该在哪里存储这个库的最佳做法是什么?将图书馆放在我的电脑上的一个位置,并且能够从多个项目中引用它是否是最佳做法?或者是更好地创建一个实例(复制)库到任何目录包含我的项目?

我感谢任何帮助!

一些好的做法是使用映射你的名字空间结构的目录树(见boost lib)。

当前文件的相对路径可能难以维护。通常的做法是通过-I标志或等效的编译器设置来添加搜索路径,然后像在当前文件路径下的所有标题一样使用所有标题。

如果您使用项目管理器或生成文件,这很容易维护。

如果您的项目使用了一些预计不会预安装的外部库,您可以将它们全部添加到externaldeps文件夹下,以便让维护人员明白他应该忽略该文件夹内容。

在posix系统上,标准库位于/ usr/lib下,/ usr/include下的标头和/ usr/share下的资源。由用户编译和安装的Lib位于/ usr/local/lib,/ usr/local/include和/ user/local/share下。

正确。如果将所有标题放在同一个目录中,则必须更新所有include指令。

最好的做法是把你的图书馆放在你的计算机的某个地方并引用它。你必须使用编译器的-I指令。例如g ++ -I/your/lib/dir/headers ...然后在源代码中使用简单的include指令。