Установите makefile для проверки исходных файлов c и C++ с помощью emacs flymake

Я пытаюсь настроить проверку синтаксиса с помощью 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.

1 ответ

Решение

Вы можете разделить его на две цели:

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))
Другие вопросы по тегам