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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clang在同一目录中包含多个搜索路径相关的知识,希望对你有一定的参考价值。

根据Clang doc的说法:

-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用一个命令搜索多个搜索路径或者可能让它在特定目录内搜索

答案

使用选项-isysroot-iwithsysroot

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

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


注意。虽然挖掘Clang command line reference试图找到一个更好的解决方案,我遇到option -ivfsoverlay似乎它可以解决你的问题。但是,我无法使它工作,但我仍然决定把它留在这里,也许它对你有用。

以上是关于clang在同一目录中包含多个搜索路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GCC 搜索路径中包含头文件?

在 Visual Studio Express 2012 中包含路径

如何在 Visual Studio 中包含子目录?

如何“运行”主包中包含多个文件的项目?

在代码片段中包含类型转换

使用 .bat 文件在目录中包含的多个文件中查找和替换字符串