boost build: как пометить включение как & quot; систему & quot; включают

В gcc а также clang, каталоги include могут быть переданы компилятору с помощью -I или же -isystem,

Разница в том, isystem пути ищутся только когда угловые скобки <> используются в #include директива, а не кавычки "", Кроме того, некоторые предупреждения подавляются, когда они появляются в системных заголовках (так как вы, вероятно, не можете обойти проблемы в системных заголовках). (Насколько я знаю, могут быть и другие незначительные различия.)

Не все компиляторы поддерживают эту концепцию, это проблема реализации, а не часть стандарта.

cmake поддерживает эту функцию специально, и будет «делать правильные вещи» на компиляторах, которые ее поддерживают.

scons исторически не поддерживал это, но есть способы обойти это, и это также имеет некоторая поддержка встроенный с недавних пор.

Есть ли эквивалентная особенность в boost.build ака bjam, b2? В документации и примерах каталоги включения указываются с помощью <include>path/to/files и принят как требование lib или же exe цели. Но я не нашел ни одного <system_include> или похожая особенность.

Если его не существует, есть ли способ обойти это? Некоторые проекты не будут строиться без предупреждения gcc а также clang если эти флаги не используются правильно.

0

Решение

Нет, в boost.build такой функции нет. Вместо этого вы можете включить условно -isystem для определенных наборов инструментов, которые поддерживают систему, включают, например:

exe myexe : mysrc.cpp : <toolset>gcc:<cxxflags>-isystem/path/to/include/files ;
1

Другие решения

Других решений пока нет …