clang在同一目录中包含多个搜索路径

时间:2018-09-18 11:35:44

标签: include clang include-path

根据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使用一个命令的多个搜索路径进行搜索,或者使它在特定目录下进行搜索

1 个答案:

答案 0 :(得分:0)

使用选项-isysroot-iwithsysroot

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

不幸的是,该解决方案仅适用于一个主文件夹,并且还使那些包含 system 文件夹,即Clang不会对其显示任何警告。 另外,-iwithsysroot相当长,因此您可能在这里没有太多输入内容了:) 但是我不知道直接通过Clang选项执行此操作的更好方法。 尽管您总是可以编写Shell脚本来简化工作...


注意。在深入研究Clang command line reference来寻找更好的解决方案时,我发现option -ivfsoverlay似乎可以解决您的问题。 虽然我无法使其工作,但我仍然决定将其留在此处,也许对您有用。