10

C で書かれたプログラムがあり、Autoconf を使用しています。これはAC_PROG_CC_C99configure.acgcc と一緒に使用すると、-std=gnu99コンパイラ オプションに変換されます。このプログラムは、C99 仕様に従ってやや厳密に記述されており、GNU 拡張機能は一切使用していません。

コンパイラにそれを強制させるには、Autoconf をどのように設定すればよいでしょうか?

4

1 に答える 1

7

私は通常、特定のコンパイラが特定の CFLAG を受け入れるかどうかをチェックする m4 マクロを使用します。

以下を aclocal.m4 に入れます (私は通常、代わりに m4/ax_check_cflags.m4 を使用します):

# AX_CHECK_CFLAGS(ADDITIONAL-CFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
#
# checks whether the $(CC) compiler accepts the ADDITIONAL-CFLAGS
# if so, they are added to the CXXFLAGS
AC_DEFUN([AX_CHECK_CFLAGS],
[
  AC_MSG_CHECKING([whether compiler accepts "$1"])
  cat > conftest.c++ << EOF
  int main(){
    return 0;
  }
  EOF
  if $CC $CPPFLAGS $CFLAGS -o conftest.o conftest.c++ [$1] > /dev/null 2>&1
  then
    AC_MSG_RESULT([yes])
    CFLAGS="${CFLAGS} [$1]"
    [$2]
  else
    AC_MSG_RESULT([no])
   [$3]
  fi
])dnl AX_CHECK_CFLAGS

次のようなものでconfigure.acから呼び出します

AX_CHECK_CFLAGS([-std=c99 -pedantic])
于 2012-05-21T09:38:43.293 に答える