我有一个只编译/重新编译所需内容的Makefile。但是,即使编译了一些内容,我也希望看到它们的编译警告。
我的情况是这样的: 1)我创建了一个名为snake.cpp的文件。 2)我做了我的项目。 snake.cpp有3个警告和0个错误。 3)我创建另一个名为cup.cpp的文件 4)我制作了我的项目,现在我看到了cup.cpp的警告,但没有看到snake.cpp的警告。
但我希望看到snake.cpp的警告,即使make跳过了编译。我不想用-Werror重新编译整个项目。事实上,除非我实际编辑了相关文件,否则我不想重新编译任何内容,但我仍然希望看到警告。
实现这一目标的最佳方式是什么?
答案 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
如果它们都是同一个可执行文件的一部分,那么您将要创建对象。