在Linux系统上,gcc是否递归搜索CPATH环境变量中声明的路径,还是需要明确指定每个Includes子目录?
答案 0 :(得分:2)
CPATH指定要搜索的目录列表。编译器正好搜索那些目录,而不是任何子目录(因此不进行递归搜索)。也就是说,给定来自#include "somedir/header.h"
的名称,它将查看通过-I
和-isystem
指定的目录并通过CPATH
指定,并将/somedir/header.h
添加到每个目录中这些条目 - 这就是全部。
这是合理的。如果它进行了递归搜索,您必须担心<time.h>
等文件的订单正确(因为还有<sys/time.h>
,并且可能通过递归搜索找到它。)