使用g ++和Makefile从编译代码中继续打印编译器警告

时间:2011-11-04 01:30:10

标签: c++ makefile warnings

我有一个只编译/重新编译所需内容的Makefile。但是,即使编译了一些内容,我也希望看到它们的编译警告。

我的情况是这样的: 1)我创建了一个名为snake.cpp的文件。 2)我做了我的项目。 snake.cpp有3个警告和0个错误。 3)我创建另一个名为cup.cpp的文件 4)我制作了我的项目,现在我看到了cup.cpp的警告,但没有看到snake.cpp的警告。

但我希望看到snake.cpp的警告,即使make跳过了编译。我不想用-Werror重新编译整个项目。事实上,除非我实际编辑了相关文件,否则我不想重新编译任何内容,但我仍然希望看到警告。

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

编译不会被“错误地”跳过,它被跳过,因为可执行文件/对象比源更新。这就是makefile的工作方式。并且方式获取警告而不重新编译是通过将它们存储在某处。听起来您的解决方案是将错误重定向到日志文件,并在make时将其打印出来。也许这会奏效,但我还没有测试过:

all: snake cup
    @cat snake.err
    @cat cup.err

snake: snake.cpp
    g++ snake.cpp -o snake 2>snake.err

cup: cup.cpp
    g++ cup.cpp -o cup 2>cup.err

.PHONY: all

如果它们都是同一个可执行文件的一部分,那么您将要创建对象。