[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Sometimes one might need to run the preprocessor on some source file. Usually it is a bad idea, as you typically need to compile your project, not merely run the preprocessor on it; therefore you certainly want to run the compiler, not the preprocessor. Resist to the temptation of following the easiest path.
Nevertheless, if you need to run the preprocessor, then use
AC_PREPROC_IFELSE
.
AC_LANG_PROGRAM
and friends.
This macro uses CPPFLAGS
, but not CFLAGS
, because
`-g', `-O', etc. are not valid options to many C
preprocessors.
It is customary to report unexpected failures with
AC_MSG_FAILURE
.
For instance:
AC_INIT(Autoconf Documentation, 2.57, [email protected]) AC_DEFINE([HELLO_WORLD], ["Hello, World\n"]) AC_PREPROC_IFELSE( [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]], [[fputs (hw, stdout);]])], [AC_MSG_RESULT([OK])], [AC_MSG_FAILURE([unexpected preprocessor failure])]) |
results in:
checking for gcc... gcc checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -E OK |
The macro AC_TRY_CPP
(see section 15.4 Obsolete Macros) used to play the
role of AC_PREPROC_IFELSE
, but double quotes its argument, making
it impossible to use it to ellaborate sources. You are encouraged to
get rid of your old use of the macro AC_TRY_CPP
in favor of
AC_PREPROC_IFELSE
, but, in the first place, are you sure you need
to run the preprocessor and not the compiler?
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |