标头包括C++;图书馆-最佳实践 我对C++越来越有信心了,我开始尝试用第三方库。我目前正在尝试在QT项目中集成AQILLA DSP C++库。我遇到了一个关于库中标题的问题

标头包括C++;图书馆-最佳实践 我对C++越来越有信心了,我开始尝试用第三方库。我目前正在尝试在QT项目中集成AQILLA DSP C++库。我遇到了一个关于库中标题的问题,c++,qt,C++,Qt,在浏览库时,我注意到一些include使用搜索路径语句,例如 #include "../../global.h" 我从中得到的是。。我不应该修改库中的文件结构。例如,假设我天真地删除了库中的所有子文件夹,这样每个文件都包含在同一个目录中。通过这样做,我将基本上打破库,我将不得不重新定义所有包含的文件路径。。。对吗 这就引出了另一个问题。如果我在项目中使用一个库,那么应该在哪里存储这个库的最佳实践是什么?将库放在我计算机上的一个位置,并能够从多个项目中引用它,这是最佳做法吗?还是最好创建一个实例

在浏览库时,我注意到一些include使用搜索路径语句,例如

#include "../../global.h"
我从中得到的是。。我不应该修改库中的文件结构。例如,假设我天真地删除了库中的所有子文件夹,这样每个文件都包含在同一个目录中。通过这样做,我将基本上打破库,我将不得不重新定义所有包含的文件路径。。。对吗

这就引出了另一个问题。如果我在项目中使用一个库,那么应该在哪里存储这个库的最佳实践是什么?将库放在我计算机上的一个位置,并能够从多个项目中引用它,这是最佳做法吗?还是最好创建一个实例(将库复制到包含我的项目的任何目录中)


谢谢你的帮助

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


最好的做法是把你的图书馆放在电脑的某个地方,并参考它。您必须使用编译器的-I指令。例如g++-I/your/lib/dir/headers。。。然后在源代码中使用simple include指令。

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

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

如果使用项目管理器或makefile,这很容易维护

如果您的项目使用了一些预期不会预安装的外部库,您可以将它们全部添加到
外部
deps
文件夹下,以向维护人员明确说明他可能应该忽略该文件夹的内容

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