【问题标题】:How do you set autotools default C++ compilation flags你如何设置 autotools 默认的 C++ 编译标志
【发布时间】:2014-09-19 17:42:24
【问题描述】:

我对使用自动工具还是很陌生,我还在学习。

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

我知道已经有一个topic,但这并没有解决我的问题:

我用过:

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

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

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

因此它会生成 Makefiles 但没有目标

提前感谢您的帮助

【问题讨论】:

  • 其实我还没有找到一个匹配autotools特性的项目,所以我不能同意上面的评论。

标签: c autotools flags autoconf automake


【解决方案1】:

The answer provided by Idav1s 也适合我,因为

AC_SUBST([FOO], [BAR QUUX])

扩展为以下 shell 代码:

FOO=BAR QUUX

在 FOO 环境变量设置为 BAR 的情况下运行 QUUX。在您的情况下,这意味着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 需要一个带有特殊变量集的工具链文件)。我暂时不建议切换构建系统来解决这样一个简单的问题。

【讨论】:

    【解决方案2】:

    这对我有用:

    configure.ac

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

    【讨论】:

      【解决方案3】:

      将它们设置为Makefile.am

      AM_CXXFLAGS = -Wall -Werror
      

      【讨论】:

      • 谢谢您的回答,但是绝对没有办法在configure.ac文件中设置它?
      猜你喜欢
      • 2011-03-08
      • 2010-09-24
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      相关资源
      最近更新 更多