当我处理我的个人 C 和 C++ 项目时,我通常把file.h
and file.cpp
在同一目录中,然后file.cpp
可以参考file.h
with a #include "file.h"
指示。
然而,通常会发现库和其他类型的项目(如 linux 内核和 freeRTOS)都包含.h
文件被放置在一个include/
目录,同时.cpp
文件保留在另一个目录中。在那些项目中,.h
文件也包含在#include "file.h"
代替#include "include/file.h"
正如我所希望的那样。
我对这一切有一些疑问:
- 这种文件结构组织有什么优点呢?
- Why are
.h
里面的文件include/
包含在#include "file.h"
代替#include "include/file.h"
?我知道真正的技巧在某些 Makefile 中,但是这样做真的比(在代码中)明确我们想要包含的文件实际上在include/
目录?
这样做的主要原因是编译的库需要标头才能被最终用户使用。按照惯例,该文件的内容include
目录是公开供公众使用的标头。源目录可能有供内部使用的标头,但这些是not旨在与编译的库一起分发。
因此,在使用该库时,您可以链接到二进制文件并添加该库的include
目录到构建系统的头路径。同样,如果将编译的库安装到集中位置,您可以知道哪些文件需要复制到中心位置(编译的二进制文件和include
目录)以及哪些文件没有(源目录等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)