gcc 是否递归搜索 CPATH?

Does gcc search CPATH recursively?

在 Linux 系统上,gcc 是递归搜索 CPATH 环境变量中声明的路径,还是需要明确指定每个 Includes 子目录?

CPATH 指定要搜索的目录列表。编译器精确地搜索这些目录,而不是任何子目录(因此没有递归搜索)。也就是说,给定一个来自 #include "somedir/header.h" 的名称,它将在通过 -I-isystem 指定的目录和通过 CPATH 指定的目录中查找,并将向每个目录添加 /somedir/header.h这些条目的——仅此而已。

这是有道理的。如果它进行递归搜索,您将不得不担心 <time.h> 等文件的顺序是否正确(因为还有 <sys/time.h> 并且可能会通过递归搜索找到它)。