2014-09-19 107 views
1

我对于使用autotools还很陌生,我仍在学习。如何设置autotools默认的C++编译标志

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

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

我用:

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

但不幸的是,使用./configure当我得到:

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

因此它生成Makefiles但没有目标

预先感谢您的任何帮助

+2

其实我还没有找到一个与autotools功能相匹配的项目,所以我不能同意上面的评论。 – 2014-09-20 18:58:36

回答

2

The answer provided by Idav1s作品我也是因为

AC_SUBST([FOO], [BAR QUUX]) 

扩展为以下shell代码:

FOO=BAR QUUX 
它运行QUUX设置为BAR的FOO环境变量

。在你的情况下,这意味着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需要一个带有特殊变量集的工具链文件)。我不会建议切换构建系统,而是解决这样一个简单的问题。

0

Makefile.am设置它们来代替:

AM_CXXFLAGS = -Wall -Werror 
+0

谢谢你的回答,但是在configure.ac文件中完全没有办法设置它吗? – BigFoot 2014-09-20 10:04:59

1

这个工作对我来说:

configure.ac

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