Как установить CPPFLAGS по умолчанию в проекте autotools - PullRequest
3 голосов
/ 17 января 2012

Мне нужно установить "-Wall -Werror" как CPPFLAGS для всех исходных файлов в моем проекте.Есть ли способ сделать это в autotools?

Я попробовал следующее в configure.ac:

AC_SUBST([AM_CPPFLAGS], [-Wall -Wextra])

Кажется, это не работает.

РЕДАКТИРОВАТЬ: Я нашел макрос m4 с именем AX_CXXFLAGS_WARN_ALL здесь: http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html Однако, когда я пытаюсь использовать его, я получаю следующую ошибку:

configure.ac:10: /usr/bin/m4: ERROR: recursion limit of 1024 exceeded, use -L<N> to change it
autom4te: /usr/bin/m4 failed with exit status: 1
aclocal: autom4te failed with exit status: 1
autoreconf: aclocal failed with exit status: 1

Мой configure.ac такойследует:

AC_INIT([foo], [1.0], [bar@baz.com])
m4_include([m4/ax_cflags_warn_all.m4])
m4_include([m4/ax_append_flag.m4])
m4_include([m4/ax_lib_oracle_oci.m4])
m4_include([m4/ax_check_openssl.m4])
AM_INIT_AUTOMAKE([foreign subdir-objects])
AM_PROG_CC_C_O
AC_PROG_CXX
AC_PROG_LIBTOOL
AX_CFLAGS_WARN_ALL
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
AX_LIB_ORACLE_OCI([11.0])
AX_CHECK_OPENSSL
AC_SUBST([AM_CXXFLAGS], [-fpic])
AC_OUTPUT

Ответы [ 3 ]

2 голосов
/ 18 января 2012

в Makefile.am:

AM_CPPFLAGS = -Wall -Wextra

Вы также можете добавить в заменители, например,

#Makefile.am
AM_CPPFLAGS = ${my_CPPFLAGS}

#configure.ac
my_CPPFLAGS="-Wall -Wextra"
AC_SUBST([my_CPPFLAGS])

Обратите внимание, что не все флаги -W предназначены для препроцессора, но для компилятора. В * CPPFLAGS должны входить только флаги препроцессора, а в * CFLAGS - флаги компилятора. Рецепт для CFLAGS такой же, как и для CPPFLAGS.

2 голосов
/ 20 января 2012

> env CXXFLAGS = "$ CXXFLAGS -Wall -Werror" ./configure [options]

Я использую это для всех видов проверок работоспособности - убедившись, что я не получаюпокончить с любыми небрежными предположениями.Это также должно работать с CPPFLAGS и CFLAGS , если они понимают опции.Я мог бы добавить строгий "- ansi" или какой-либо другой стандарт, а также "- pedantic" для дополнительных проверок.

Таким образом, вы можете оставить свою конфигурациюТолько файлы .ac и Makefile.am, когда используются разрешающие флаги - зная, что их можно правильно построить при строгих настройках.

0 голосов
/ 18 января 2012

В Makefile.am:

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