如何设置autotools默认的C ++编译标志

时间:2014-09-19 17:42:24

标签: c autotools flags autoconf automake

我使用autotools时很新,我还在学习。

因此,正如我的主题标题中所述,我想知道如何设置编译标志。

我知道已经存在topic,但它并没有解决我的问题:

我用过:

...
AC_SUBST([AM_CXXFLAGS], [-Wall -Werror])
...

但不幸的是,在使用./configure时,我得到了:

...
./configure: line 3436: -Wall: command not found
...

因此它生成Makefile但没有目标

提前感谢您的任何帮助

3 个答案:

答案 0 :(得分:2)

The answer provided by Idav1s也适用于我,因为

AC_SUBST([FOO], [BAR QUUX])

扩展为以下shell代码:

FOO=BAR QUUX

运行QUUX,FOO环境变量设置为BAR。在您的情况下,这意味着AM_CXXFLAGS设置为-Wall,并执行-Werror。为什么你看到-Wall被执行而不为我所知......对我而言,错误发生在第2802行:

configure: line 2802: error: -Werror not found

所以我打开了configure脚本,我发现的是第2802行的AM_CXXFLAGS=-Wall -Werror。在configure.ac中将其更改为['-Wall -Werror']为我修复了一些内容。

Autotools构建系统非常便于移植,它使交叉编译比某些构建系统更容易(例如,Cmake需要设置特殊变量的工具链文件)。我不建议将构建系统转换为解决这个简单问题的方法。

答案 1 :(得分:1)

这对我有用:

<强> configure.ac

...
AC_SUBST([AM_CXXFLAGS], ["-Wall -Werror"])
...

答案 2 :(得分:0)

将其设置为Makefile.am而不是:

AM_CXXFLAGS = -Wall -Werror