当我处理我的个人 C 和 C++ 项目时,我通常将 file.h
和 file.cpp
放在同一个目录中,然后将 file.cpp
可以使用 #include "file.h"
指令引用 file.h
。
但是,通常会发现所有 .h
文件都放在 include/
中的库和其他类型的项目(如 linux 内核和 freeRTOS)目录,而 .cpp
文件保留在另一个目录中。在这些项目中,.h
文件也包含在 #include "file.h"
中,而不是 #include "include/file.h"
正如我所希望的那样。
我对这一切有一些疑问:
- 这种文件结构组织有什么好处?
- 为什么
include/
中的.h
文件包含在#include "file.h"
而不是#include "include/file.h"
?我知道真正的诀窍是在某个 Makefile 中,但是这样做真的比(在代码中)明确我们要包含的文件实际上在include/
目录中更好吗?
最佳答案
这样做的主要原因是编译的库需要 header 才能被最终用户使用。按照惯例,include
目录的内容是公开供公众使用的 header 。源目录可能有供内部使用的 header ,但这些 header 不要与已编译的库一起分发。
因此,在使用库时,您需要链接到二进制文件并将库的 include
目录添加到构建系统的头文件路径中。同样,如果您将编译后的库安装到集中位置,您可以知道哪些文件需要复制到中心位置(编译后的二进制文件和 include
目录),哪些文件不需要(源目录等)。
关于c++ - 为什么要在 C 和 C++ 项目中创建包含/目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48554758/