我对C ++越来越有信心,以至于我开始尝试使用某些第三方库。我目前正在尝试将Aquila DSP C ++库集成到Qt项目中。我遇到过关于库中标题的问题。
浏览库时,我注意到其中一些包含使用搜索路径语句,例如
#include "../../global.h"
我从中得到的是......我不应该修改库中的文件结构。例如,假设我天真地删除库中的所有子文件夹,以便每个文件都包含在同一目录中。通过这样做,我基本上打破了库,我将不得不重新定义所有包含的文件路径...正确吗?
这让我想到另一个问题。如果我在项目中使用库,那么我应该在哪里存储这个库的最佳做法是什么?最好的做法是将库放在我的计算机上的一个位置,并能够从多个项目中引用它吗?或者更好的是创建一个实例(复制)库到包含我的项目的任何目录?
我感谢任何帮助!
答案 0 :(得分:2)
一些好的做法是使用映射命名空间结构的目录树(请参阅boost lib)。
当前文件的相对路径可能难以维护。通常的做法是通过-I
标志或等效的编译器设置添加搜索路径,然后使用所有标题,就像它们在当前文件路径下的位置一样。
如果您使用项目经理或生成文件,这很容易维护。
如果您的项目使用了一些预期不会预先安装的外部库,您可以将它们全部添加到external
或deps
文件夹下,以便向维护者明确说明他应该忽略那个文件夹内容。
在posix系统上,标准库位于/ usr / lib下,/ usr / include下的头文件和/ usr / share下的资源。用户编译和安装的Libs位于/ usr / local / lib,/ usr / local / include和/ user / local / share下。
答案 1 :(得分:1)
正确。如果将所有标题放在同一目录中,则必须更新所有include指令。
最佳做法是将您的库放在计算机中的某个位置并引用它。您必须使用编译器的-I指令。例如g ++ -I / your / lib / dir / headers ...然后在源代码中使用简单的include伪指令。