如何使用autotools强制最低限度的gcc版本?

如何使用autotools强制最低限度的gcc版本?,gcc,c++11,version,autotools,Gcc,C++11,Version,Autotools,我已经完成了一个使用自动工具的项目,并添加了需要c++11,然后至少需要GCC4.7的功能 我应该在configure.ac中添加什么来检查gcc版本4.7是否至少可用?然后使用符合此要求的最低版本,或者更高的系统默认版本?请记住,GCC安装还包括一个名称相同但版本包含在名称中的可执行文件。因此,如果你有GCC版本4.7,那么除了有一个g++程序外,你还有一个g++-4.7 当您知道这一点时,您可以使用以下内容: dnl # Check which GCC version is wanted A

我已经完成了一个使用自动工具的项目,并添加了需要c++11,然后至少需要GCC4.7的功能


我应该在configure.ac中添加什么来检查gcc版本4.7是否至少可用?然后使用符合此要求的最低版本,或者更高的系统默认版本?

请记住,GCC安装还包括一个名称相同但版本包含在名称中的可执行文件。因此,如果你有GCC版本4.7,那么除了有一个
g++
程序外,你还有一个
g++-4.7

当您知道这一点时,您可以使用以下内容:

dnl # Check which GCC version is wanted
AC_ARG_WITH(gcc,
  [ --with-gcc=<version> Use GCC (gcc and g++) of the specified version],
  [if test "$withval" != yes; then
     AC_PROG_CXX([g++-$withval g++ c++])
     AC_PROG_CC([gcc-$withval gcc])
   elif test "$withval" = yes; then
     AC_PROG_CXX([g++ c++])
     AC_PROG_CC([gcc])
   fi])
dnl#检查需要哪个GCC版本
带有(gcc、,
[--with gcc=使用指定版本的gcc(gcc和g++),
[如果测试“$withval”!=是;则
AC_PROG_CXX([g++-$withval g++c++]))
AC_PROG_CC([gcc-$withval gcc])
elif测试“$withval”=是;然后
AC_PROG_CXX([g++c++]))
AC_PROG_CC([gcc])
fi])

根据您的要求进行修改。

请记住,GCC安装还包括一个名称相同但版本包含在名称中的可执行文件。因此,如果你有GCC版本4.7,那么除了有一个
g++
程序外,你还有一个
g++-4.7

当您知道这一点时,您可以使用以下内容:

dnl # Check which GCC version is wanted
AC_ARG_WITH(gcc,
  [ --with-gcc=<version> Use GCC (gcc and g++) of the specified version],
  [if test "$withval" != yes; then
     AC_PROG_CXX([g++-$withval g++ c++])
     AC_PROG_CC([gcc-$withval gcc])
   elif test "$withval" = yes; then
     AC_PROG_CXX([g++ c++])
     AC_PROG_CC([gcc])
   fi])
dnl#检查需要哪个GCC版本
带有(gcc、,
[--with gcc=使用指定版本的gcc(gcc和g++),
[如果测试“$withval”!=是;则
AC_PROG_CXX([g++-$withval g++c++]))
AC_PROG_CC([gcc-$withval gcc])
elif测试“$withval”=是;然后
AC_PROG_CXX([g++c++]))
AC_PROG_CC([gcc])
fi])

根据您的要求进行修改。

请记住,GCC安装还包括一个名称相同但版本包含在名称中的可执行文件。因此,如果你有GCC版本4.7,那么除了有一个
g++
程序外,你还有一个
g++-4.7

当您知道这一点时,您可以使用以下内容:

dnl # Check which GCC version is wanted
AC_ARG_WITH(gcc,
  [ --with-gcc=<version> Use GCC (gcc and g++) of the specified version],
  [if test "$withval" != yes; then
     AC_PROG_CXX([g++-$withval g++ c++])
     AC_PROG_CC([gcc-$withval gcc])
   elif test "$withval" = yes; then
     AC_PROG_CXX([g++ c++])
     AC_PROG_CC([gcc])
   fi])
dnl#检查需要哪个GCC版本
带有(gcc、,
[--with gcc=使用指定版本的gcc(gcc和g++),
[如果测试“$withval”!=是;则
AC_PROG_CXX([g++-$withval g++c++]))
AC_PROG_CC([gcc-$withval gcc])
elif测试“$withval”=是;然后
AC_PROG_CXX([g++c++]))
AC_PROG_CC([gcc])
fi])

根据您的要求进行修改。

请记住,GCC安装还包括一个名称相同但版本包含在名称中的可执行文件。因此,如果你有GCC版本4.7,那么除了有一个
g++
程序外,你还有一个
g++-4.7

当您知道这一点时,您可以使用以下内容:

dnl # Check which GCC version is wanted
AC_ARG_WITH(gcc,
  [ --with-gcc=<version> Use GCC (gcc and g++) of the specified version],
  [if test "$withval" != yes; then
     AC_PROG_CXX([g++-$withval g++ c++])
     AC_PROG_CC([gcc-$withval gcc])
   elif test "$withval" = yes; then
     AC_PROG_CXX([g++ c++])
     AC_PROG_CC([gcc])
   fi])
dnl#检查需要哪个GCC版本
带有(gcc、,
[--with gcc=使用指定版本的gcc(gcc和g++),
[如果测试“$withval”!=是;则
AC_PROG_CXX([g++-$withval g++c++]))
AC_PROG_CC([gcc-$withval gcc])
elif测试“$withval”=是;然后
AC_PROG_CXX([g++c++]))
AC_PROG_CC([gcc])
fi])

根据您的需求进行修改。

除了支持C++11的GCC之外,还有其他编译器,为什么要对特定版本的GCC进行测试


Autoconf归档文件已经从正在使用的任何编译器中删除。

除了支持C++11的GCC之外,还有其他编译器,为什么要对特定版本的GCC进行测试


Autoconf归档文件已经从正在使用的任何编译器中删除。

除了支持C++11的GCC之外,还有其他编译器,为什么要对特定版本的GCC进行测试


Autoconf归档文件已经从正在使用的任何编译器中删除。

除了支持C++11的GCC之外,还有其他编译器,为什么要对特定版本的GCC进行测试


无论使用什么编译器,Autoconf存档都有。

非常感谢Joachim。我阅读了AC_ARG_的文档,但我不理解它,也不知道如何“修改我的要求”。你能不能提供一个完整的例子,我不知道这里什么是注释还是不注释。@lalebarde实际上,在考虑了一下之后,强制使用特定的编译器和编译器版本是错误的。相反,您应该检查编译器是否能够处理您希望它处理的结构。这意味着您应该检查是否有空,例如,如果您使用空PTR。参见示例,例如,了解该示例。它检查
-std=c++11
(和
-std=c++0x
)标志和其他杂项。C++11特性(如
nullptr
、Unicode字符串文字和原始字符串文字)。非常感谢Joachim。我阅读了AC_ARG_的文档,但我不理解它,也不知道如何“修改我的要求”。你能不能提供一个完整的例子,我不知道这里什么是注释还是不注释。@lalebarde实际上,在考虑了一下之后,强制使用特定的编译器和编译器版本是错误的。相反,您应该检查编译器是否能够处理您希望它处理的结构。这意味着您应该检查是否有空,例如,如果您使用空PTR。参见示例,例如,了解该示例。它检查
-std=c++11
(和
-std=c++0x
)标志和其他杂项。C++11特性(如
nullptr
、Unicode字符串文字和原始字符串文字)。非常感谢Joachim。我阅读了AC_ARG_的文档,但我不理解它,也不知道如何“修改我的要求”。你能不能提供一个完整的例子,我不知道这里什么是注释还是不注释。@lalebarde实际上,在考虑了一下之后,强制使用特定的编译器和编译器版本是错误的。相反,您应该检查编译器是否能够处理您希望它处理的结构。这意味着您应该检查是否有空,例如,如果您使用空PTR。参见示例,例如,了解该示例。它检查
-std=c++11
(和
-std=c++0x
)标志和其他杂项。C++11特性(如