求助:如何配置Clang使其递归查找依赖目录中的头文件
解决Clang无法递归查找头文件目录的问题
Clang的-I参数仅会将指定目录添加到直接的头文件搜索路径,不会自动递归其子目录。针对你的场景,有以下几种可行方案:
方案1:手动添加所有子目录到搜索路径
如果子目录数量不多,可以直接把每个子目录通过-I参数添加:
clang main.cpp -Idependency -Idependency/sub1 -Idependency/sub2
方案2:用Shell命令自动生成所有子目录的搜索参数
如果子目录较多或结构经常变化,可借助shell的find命令自动遍历所有子目录并生成-I参数:
clang main.cpp $(find dependency -type d -printf "-I%p ")
这条命令会遍历dependency下所有子目录,逐个添加为头文件搜索路径。
方案3:修改代码中的#include语句(无需额外编译参数)
如果允许修改代码,可将#include语句改为子目录的相对路径:
#include "root-header.h" #include "sub1/header1.h" #include "sub2/header2.h"
这样仅用clang main.cpp -Idependency就能正常编译。
注意:Clang本身没有内置的"递归搜索头目录"参数,以上是最常用的替代方案。
内容的提问来源于stack exchange,提问作者Veno
相关产品推荐
相关产品推荐

