【问题标题】:autoconf & automake versus -O2 versus -O3autoconf 和 automake vs -O2 vs -O3
【发布时间】:2011-06-10 20:10:11
【问题描述】:

我的 configure.ac 包含

AC_PROG_CXX

我的 Makefile.am 包含

AM_CXXFLAGS= -Werror -O3

生成的“配置”脚本除了 O3 之外,还会继续添加 -O2。

我怀疑我应该在 configure.ac 中做一些事情来声明我对 O3 的偏好,但我在文档中找不到它。如何告诉它我要控制优化级别?

【问题讨论】:

    标签: autoconf automake


    【解决方案1】:

    不,您不应该向 configure.ac 添加任何内容来表明对 -O3 的偏好。这种东西属于用户的 CONFIG_SITE,而不是 configure.ac

    但是,如果你坚持打破惯例,你可以这样做:

    : ${CXXFLAGS=-Werror -O3}

    请注意,此行必须出现在 AC_PROG_CXX 之前(或任何需要 AC_REQUIRES 的宏,例如 LT_INIT,因为这将导致 AC_PROG_CXX 在此行之前发送到配置脚本中。)

    【讨论】:

    • 我不明白。我有一个经过精心编写的程序,可以安全地进行最大优化并从中受益。没有办法表达吗?
    • 如果未指定首选项,用户希望使用 -g -O2。修改 CXXFLAGS 是用户的特权,而不是包维护者的特权。 AM_CXXFLAGS可以加-Werror,但优化级别必须留给用户选择。
    • 请注意最后的评论。如果您在配置期间检查 CXX 接受该选项,您应该只将 -Werror 添加到 AM_CXXFLAGS。并非所有编译器都这样做,当编译器不接受该选项时,用户会非常恼火。
    • 叹息。我只想更改默认设置,让用户在不同意时询问他们想要什么。
    • 上面的sn-p应该能做到这一点,应该没问题,但是有些用户会大声抱怨,这不是最佳实践。您始终可以在包控制文件(debian/rules 或 *.spec)中指定标志
    【解决方案2】:

    前面的答案是正确的,应该由安装程序选择使用什么标志。如果您仍然想知道 -g -O2 来自哪里(可能),请参阅http://www.gnu.org/s/hello/manual/autoconf/C_002b_002b-Compiler.html

    该页面确实建议“如果您的包不喜欢这个默认值,那么可以在 AC_INIT 之后和 AC_PROG_CXX 之前插入行 ': ${CXXFLAGS=""}' 来选择一个空的默认值。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多