2014-03-14 88 views
0

在我的应用程序使用静态库的头文件foo.h包括静态库

在我的构建脚本静态库相关发言中,我使用的gcc -I标志​​。

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

#include "foo/foo.h" 

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

#include "foo/foo.h" 

然而,这将迫使bar用户放置foo在一个名为foo目录。

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

添加-I标志,允许包括barfoo只有

#include "foo.h" 
+0

听起来很明智。 '#include'文件名(以及任何层次结构)应该按逻辑*组织,而不是随机的实现细节。 – vonbrand

回答

1

之所以使用文件夹结构与包括文件是防止碰撞具有相同名称的头文件生成脚本。例如,假设我正在使用一个库进行加密,并且它们有一个名为“status.h”的头文件。同时,我想使用消息传递库,并且他们也有一个名为“status.h”的头文件。它们不能共存于同一个目录中,如果您将该目录设置为包含路径,它可能不知道要包含哪个目录。如果你让他们单独可以包括:

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

所以回答你的问题取决于你怎么可能认为包含文件的名称将冲突与其他包括其他的库文件。如果它永远不会发生冲突,那么你的建议是好的。如果它们会冲突,让他们使用目录。

快乐编码!

+0

我没有考虑这一点,谢谢。在这种情况下,'foo.h'具有相当独特的名称,所以我想我会使用我提出的解决方案。 – OregonTrail