我有一个 Makefile,它只编译/重新编译必要的内容。然而,即使在编译了一些东西之后,我也希望看到他们的编译警告。
我的场景是这样的: 1) 我制作了一个名为 snake.cpp 的文件。 2)我做我的项目。 snake.cpp 有 3 个警告和 0 个错误。 3)我制作了另一个名为 cup.cpp 的文件 4) 我做了我的项目,现在我看到了 cup.cpp 的警告,但没有看到 snake.cpp 的警告。
但是我想看到 snake.cpp 的警告,即使 make 跳过了编译。我不想用 -Werror 重新编译整个项目。事实上,除非我实际编辑了相关文件,否则我不想重新编译任何东西,但我仍然希望看到警告。
实现此目标的最佳方法是什么?
最佳答案
编译不是“错误地”跳过的,而是因为可执行文件/对象比源代码更新而被跳过。这就是 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
如果它们都是同一个可执行文件的一部分,您将需要创建对象。
关于c++ - 使用 g++ 和 Makefiles 从编译代码中打印编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003964/