Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态库中静态库依赖项的Include语句_C_Gcc_Include_Dependencies_Static Libraries - Fatal编程技术网

静态库中静态库依赖项的Include语句

静态库中静态库依赖项的Include语句,c,gcc,include,dependencies,static-libraries,C,Gcc,Include,Dependencies,Static Libraries,在我的应用程序中,我使用带有头文件foo.h 在构建脚本中,我使用gcc-I标志-I./lib foo库位于目录/lib/foo中。在我的主要应用程序中,我包括foo.has #include "foo/foo.h" 现在我正在将我的应用程序的一部分重构为一个库,bar,我希望它能静态链接到另一个应用程序。此库bar依赖于foo。根据我当前的项目布局,我可以将foo作为 #include "foo/foo.h" 但是,这将迫使bar的用户将foo放在名为foo的目录中 在这种情况下要做的标准

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

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

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

#include "foo/foo.h"
现在我正在将我的应用程序的一部分重构为一个库,
bar
,我希望它能静态链接到另一个应用程序。此库
bar
依赖于
foo
。根据我当前的项目布局,我可以将
foo
作为

#include "foo/foo.h"
但是,这将迫使
bar
的用户将
foo
放在名为
foo
的目录中

在这种情况下要做的标准事情是:

在构建脚本中添加一个
-I
标志,允许在
bar
中包含
foo
,只需

#include "foo.h"

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

#include "encryption/status.h"
#include "messaging/status.h"
因此,问题的答案取决于您认为包含文件的名称与其他库的其他包含文件冲突的可能性。如果它永远不会冲突,那么你的建议是好的。如果与它们冲突,请让它们使用该目录


快乐编码

听起来很有道理。<>代码>包含< /COD>文件名(和任何层次结构)应该逻辑地组织,而不是通过随机实现细节。我没有考虑,谢谢。在本例中,
foo.h
有一个非常独特的名称,因此我想我将使用我建议的解决方案。