clang включает несколько путей поиска в одном каталоге - PullRequest
0 голосов
/ 18 сентября 2018

Согласно 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 искать с помощью одной команды путь множественного поиска или, возможно, заставить его искать в определенном каталоге

1 Ответ

0 голосов
/ 18 сентября 2018

Используйте опции -isysroot и -iwithsysroot:

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

К сожалению, это решение работает только для одной основной папки, и оно также включает в себя папки системные , то есть Clang не будет показывать для них никаких предупреждений. Кроме того, -iwithsysroot довольно длинный, так что вы не можете сэкономить много печатать там :) Но я не знаю лучшего способа сделать это напрямую через опции Clang. Хотя вы всегда можете написать сценарий оболочки, чтобы облегчить работу ...


Примечание. При копании в Ссылка на командную строку Clang , пытаясь найти лучшее решение, я наткнулся на option -ivfsoverlay, который, возможно, мог бы решить вашу проблему. Я не смог заставить его работать, но я все же решил оставить это здесь, может быть, это будет полезно для вас.

...