在静态库中包含静态库依赖项的声明

时间:2014-03-14 01:40:26

标签: c gcc include dependencies static-libraries

在我的应用程序中,我使用带有头文件foo.h

的静态库

在我的构建脚本中,我使用gcc -I标记-I./lib

foo库位于目录./lib/foo中。在我的主要应用程序中,我将foo.h包括为

#include "foo/foo.h"

现在我将我的应用程序的一部分重构为库bar,我希望将其静态链接到另一个应用程序。此库bar取决于foo。使用我当前的项目布局,我可以在foo中包含bar作为

#include "foo/foo.h"

但是,这会强制bar的用户将foo放在名为foo的目录中。

在这种情况下,标准的事情是以下吗?

在构建脚本中添加-I标记,允许foo中的bar包含

#include "foo.h"

1 个答案:

答案 0 :(得分:1)

使用包含文件的文件夹结构的原因是为了防止与同名头文件冲突。例如,假设我使用库进行加密,并且它们有一个名为“status.h”的头文件。同时我想使用消息库,它们还有一个名为“status.h”的头文件。它们不能共存于同一目录中,如果您将目录设为包含路径,则可能无法知道要包含哪个目录。如果你将它们分开,你可以同时包括:

#include "encryption/status.h"
#include "messaging/status.h"

因此,您的问题的答案取决于您认为包含文件的名称与其他库的其他包含文件冲突的可能性。如果它永远不会发生冲突那么你所建议的就好了。如果它们发生冲突,请让他们使用目录。

快乐的编码!