c++ - 使用 g++ 和 Makefiles 从编译代码中打印编译器警告

标签 c++ makefile warnings

我有一个 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/

相关文章:

c++ - 将 fstream 转换为 float

c++ - std::map 索引和插入调用之间的区别

c++ - 如何在成员函数中使用 "this"?

c - makefile(链接2个源文件,非主文件)

c++ - 使用 Makefile 高效编译多个测试文件

java - 用于 Java 的 MakeFile?

java - 尝试关闭控制台中的警告但失败

libraries - 对符号 'BIO_ctrl@@libcrypto.so.10' 的 undefined reference

r - 关闭未使用的 RODBC 句柄

c++ - 使用函数 IsWin2000() 会产生 C++ 警告 : C4996 - Deprecated Function