autotools: включить предупреждения компилятора - PullRequest
5 голосов
/ 31 августа 2010

для C-проекта, основанного на autotools, я хотел бы получить еще несколько предупреждений от компилятора (например, по крайней мере -Wall в CFLAGS)Каков предпочтительный способ включить флаги компилятора, ничего не нарушая?Существует ли макрос m4, который проверяет, понимает ли данный флаг компилятора компилятор?С таким макросом я мог бы сделать

TEST_AND_USE(-Wall -Wextra <other flags>)

Спасибо

Ответы [ 4 ]

9 голосов
/ 01 сентября 2010

Вы можете просто использовать AC_TRY_COMPILE:

AC_MSG_CHECKING(whether compiler understands -Wall)
old_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall"
AC_TRY_COMPILE([],[],
  AC_MSG_RESULT(yes),
  AC_MSG_RESULT(no)
  CFLAGS="$old_CFLAGS")

2015 дополнение: AC_TRY_COMPILE теперь устарело, вместо этого следует использовать AC_COMPILE_IFELSE:

AC_MSG_CHECKING(whether compiler understands -Wall)
old_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
  AC_MSG_RESULT(yes),
  AC_MSG_RESULT(no)
  CFLAGS="$old_CFLAGS")
7 голосов
/ 20 сентября 2010

Не беспокойтесь об изменении configure.ac.Просто позвоните ./configure с CFLAGS, о котором вы заботитесь:

./configure CFLAGS='-Wall -Wextra -O2 -g'
4 голосов
/ 01 сентября 2010

Широко используется макрос attribute.m4 CC_CHECK_CFLAG_APPEND из проекта xine.Тем не менее, вы часто находите варианты (так как это довольно просто), написанные непосредственно в configure.ac

2 голосов
/ 31 августа 2010

Я делаю это:

# debug compilation
AC_ARG_ENABLE(debug,
    AC_HELP_STRING(--enable-debug, [Debug compilation (Default = no)]),
    enable_debug=$enableval, enable_debug=no)

if test "$enable_debug" = "yes" ; then
    CFLAGS="$CFLAGS  -g -O0 -Wall -Wno-uninitialized"
    CXXFLAGS="$CXXFLAGS -g -O0 -Wall -Wno-uninitialized"
fi

это низкотехнологичное решение, но вам не нужно размещать все компиляторы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...