使用 autotools 禁用对特定文件的优化

Disable optimizations for a specific file with autotools

我正在为大型代码库设置 autotools,该代码库曾经只是一个 bash 脚本编译,后来只是手写 Makefile。

我们有一组文件需要关闭编译器优化。这些文件已经在它们自己的子目录中,因此它们将有自己的 Makefile.am。

放弃任何现有的编译器优化并在编译器上为这些特定文件强制设置 -O0 标志的正确方法是什么?

您不必删除现有的优化:将使用编译器调用时 -O 的最后一个值,因此只需在末尾添加 -O0 就足够了。

automake 不直接支持此功能,但文档中定义了 a trick you can use

否则,如果你知道你只会用 GNU make 调用你的 makefile,你就可以玩其他 GNU make 特有的技巧;您可能必须禁用有关不可移植内容的 automake 警告。

我同意 Brett Hale 的评论来使用 subpackages。我能够插入

: ${CFLAGS="-O0"}

before AC_PROG_CC,设置适当的优化。其他解决方案不起作用,因为 -g -O2 是最后添加的。你永远无法在它之后得到另一个 -O 变量。