c++ - 设置 makefile 以使用 emacs flymake 检查 c 和 c++ 源文件

标签 c++ c emacs makefile flymake

我正在尝试使用 flymake 设置语法检查,并且我已经完成了基本设置。

我的 flymake makefile 如下所示:

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 源代码。

现在如何为 C++ 使用相同的 makefile 和相同的检查语法目标?我不能将多个 -std 选项(如 -std=c99 -std=c++98)设置为同一个 gcc 调用,我可以吗?我需要使用一些条件吗?我不能在同一个 Makefile 上有多个检查语法目标。

最佳答案

你可以把它分成两个目标:

check-syntax: check-syntax-c check-syntax-cxx

然后在一个目标中使用 C 编译器和 cflags检查语法,并在另一个目标中使用 C++ 和 C++ 标志检查语法。

尽管您必须将源代码拆分为 C 和 C++ 源代码,但无论如何您都应该这样做。


如果您还没有分割文件,您可以使用 GNU Make text function命名为 filter 以拆分源:

CHK_SOURCES_C   = $(filter %.c,$(CHK_SOURCES))
CHK_SOURCES_CXX = $(filter %.cpp,$(CHK_SOURCES))

关于c++ - 设置 makefile 以使用 emacs flymake 检查 c 和 c++ 源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377288/

相关文章:

c++ - 执行时间如何取决于使用 OpenMP 库的线程数量的增加?

c# - Arduino串口,数据未到达

c++ - 如何从类定义中省略私有(private)非虚拟方法?

c++ - 函数内的指针行为

emacs - AUCTeX:自定义 ‘fill-nobreak-predicate’ 钩子(Hook)以尊重大括号

c++ - MyClass::metaobject VS2005 的 Qt 链接问题

c - 如何将 ".gram"文件链接到 C 中的 pocketsphinx

macos - 使终端中的 emacs 使用深色而不是浅色字体锁定颜色

emacs - 如何设置 paredit 注释行换行长度(或将其关闭)

c - 带有 scanf 的程序在 NetBeans 中无法正常工作