Как я устанавливаю систему сканирований, включают путь

Используя сканирования я могу легко установить мой включать пути:

env.Append( CPPPATH=['foo'] )

Это передает флаг

-Ifoo

к gcc

Однако я пытаюсь скомпилировать с большим количеством включенных предупреждений. В особенности с

env.Append( CPPFLAGS=['-Werror', '-Wall', '-Wextra'] )

то, которое умирает ужасно на определенном повышении, включает... Я могу зафиксировать это путем добавления, что повышение включает в систему, включают путь, а не включать путь, как gcc система обработок включает по-другому.

Таким образом, то, что я должен быть передан gcc вместо-Ifoo,

-isystem foo

Я предполагаю, что мог сделать это с переменной CPPFLAGS, но задавался вопросом, было ли лучшее решение, встроенное в сканирования.

19
задан Michael Anderson 14 March 2010 в 03:05
поделиться

2 ответа

Нет встроенного способа передачи -isystem include paths в SCons, главным образом потому, что он очень специфичен для компилятора / платформы.

Помещение его в CXXFLAGS будет работать, но учтите, что это скроет заголовки от сканера зависимостей SCons, который смотрит только на CPPPATH.

Это, вероятно, нормально, если вы не ожидаете, что эти заголовки когда-либо изменятся, но может вызвать странные проблемы, если вы используете кеш результатов сборки и / или кеш неявных зависимостей.

12
ответ дан 30 November 2019 в 04:40
поделиться

Если вы это сделаете

  print env.Dump()

, вы увидите _CPPINCFLAGS, и вы увидите переменную, используемую в CCCOM (или _CCCOMCOM). _CPPINCFLAGS обычно выглядит следующим образом:

  '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'

Из этого вы, вероятно, можете увидеть, как вы могли бы добавить набор включений «isystem», например, _CPPSYSTEMINCFLAGS или что-то в этом роде. Просто определите свой собственный префикс, имя path var (например, CPPSYSTEMPATH) и суффикс и используйте приведенную выше идиому для сцепления префикса. Затем просто добавьте свой _CPPSYSTEMINCFLAGS в CCCOM или _CCCOMCOM и уходите.

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

6
ответ дан 30 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: