Я пытаюсь настроить проверку синтаксиса с помощью flymake, и у меня работает базовая настройка.
Мой make-файл для flymake выглядит следующим образом:
INCLUDES = -I ./inc ## list of more includes omitted for brevity
.PHONY: check-syntax
check-syntax:
gcc -Wall -Wextra -pedantic -fsyntax-only -Wno-variadic-macros -std=c99 $(INCLUDES) $(CHK_SOURCES)
Это работает нормально для моих C-источников.
Теперь, как использовать тот же make-файл и ту же цель проверки синтаксиса для C ++? Я не могу установить несколько параметров -std, например -std = c99 -std = c ++ 98, для одного и того же вызова gcc, или я могу? Нужно ли использовать какие-то условные? Я не могу иметь несколько целей проверки синтаксиса на одном и том же Makefile.
Вы можете разделить его на две цели:
check-syntax: check-syntax-c check-syntax-cxx
Затем проверьте синтаксис, используя компилятор C и флаги C в одной цели, и флаги C ++ и C ++ для другой.
Хотя вы должны разделить свои источники на источники C и C ++, что вы должны сделать в любом случае.
Если у вас нет разделенных файлов, вы можете сделать это с помощью GNU Make текстовая функция названный filter
разделить источники:
CHK_SOURCES_C = $(filter %.c,$(CHK_SOURCES))
CHK_SOURCES_CXX = $(filter %.cpp,$(CHK_SOURCES))
Других решений пока нет …