首页 > 解决方案 > clang 在同一目录中包含多个搜索路径

问题描述

根据 Clang 文档:

-I <目录>
将指定目录添加到包含文件的搜索路径中。

如果有一种方法可以使用一个 -I 命令在同一目录中添加多个搜索路径,我会感到很困惑,如下所示:

-I"Dir1/SubDir/SubDir/SubDir/{IncludePath1,IncludePath2,IncludePath3}"

我的项目文件夹树(不幸的是)的形式是有 2 个主要文件夹用于包含路径,每个文件夹都包含许多 -I 选项的路径。这会导致 clang 命令很长,我举个例子:

clang (...) 
-I"Dir1/SubDir/SubDir/.../SubDir/IncludePath1"
-I"Dir1/SubDir/SubDir/.../SubDir/IncludePath2"
-I"Dir1/SubDir/SubDir/.../SubDir/IncludePath3"
-I"Dir1/SubDir/SubDir/.../SubDir/(And so on...)" 
-I"Dir2/SubDir/SubDir/.../SubDir/IncludePath1"
-I"Dir2/SubDir/SubDir/.../SubDir/IncludePath2"
-I"Dir2/SubDir/SubDir/.../SubDir/IncludePath3"
-I"Dir2/SubDir/SubDir/.../SubDir/(And so on...)" 

所以我再次想知道是否有办法告诉clang用一个命令搜索多个搜索路径,或者让它在特定目录中搜​​索

标签: includeclanginclude-path

解决方案


使用选项-isysroot-iwithsysroot

clang -isysroot"Dir1/SubDir/SubDir/SubDir/" -iwithsysroot"/IncludePath1/" \
  -iwithsysroot"/IncludePath2/" -iwithsysroot"/IncludePath3/"

不幸的是,此解决方案仅适用于一个主文件夹,并且它还使那些包含文件夹成为系统文件夹,即 Clang 不会为它们显示任何警告。此外,-iwithsysroot它很长,所以你可能不会在那里节省太多打字:) 但我不知道有什么更好的方法可以直接通过 Clang 选项来做到这一点。虽然你总是可以编写一个 shell 脚本来简化工作......


笔记。在挖掘Clang 命令行参考以寻找更好的解决方案时,我遇到了似乎可以解决您的问题的选项。-ivfsoverlay不过,我无法让它工作,但我还是决定把它留在这里,也许它对你有用。


推荐阅读