[vox-tech] Asking C compiler to test for #include file

Mark K. Kim vox-tech@lists.lugod.org
Sun, 20 Jul 2003 15:02:33 -0700 (PDT)


If you're checking for SDL:

   #include "SDL.h"
   #ifndef _SDL_H
   #error You need to install libsdl1.2-dev
   #endif

SDL is maintained soleby by Sam, and he's not likely to change the _SDL_H
symbol in the future, so it's safe to use the _SDL_H symbol to test for
SDL.h.

The same goes for other libraries, too.  Just check the header file to see
what symbol gets defined by the header files.  But you *can't* do this for
standard libraries, like C standard libraries that gets recreated by
individual compiler vendors.  For most libraries you use (SDL, SDL mixer,
TTF lib, etc.), though, they get maintained only by a handful of people so
it's relatively safe to use those symbols.

But if doing the above technique is too "iffy", the more "correct" way
would be to use Autoconf.  Here's my tutorial on Autoconf/Automake (a very
good one at that, too ^_^):

   http://www.cbreak.org/projects/autotools/

-Mark


On Sun, 20 Jul 2003, Bill Kendrick wrote:

>
> Right now I have a program that will die if certain headers can't be found.
>
> The issue of getting these headers has practically become an FAQ for the libraries installed.
> ("You forgot to download the *-dev packages of the library, which contains the headers!")
>
>
> I'd like, if possible, GCC to barf with my OWN error, stating something along these lines,
> rather than just:
>
>   src/myprog.c:15: foo.h: No such file or directory
>
>
> I realize I can spit out an error message using the C "#error" directive, but is there a simple
> (and portable) way of TESTING?
>
> e.g.:
>
>   #SOME_IF-LIKE_DIRECTIVE_I_DON'T_KNOW_ABOUT
>
>     #include "somelib.h"
>
>   #else
>
>     #error "Ya big dummy!  You need to install the 'somelib-dev' package!"
>
>   #endif
>
>
>
> Is there such a thing?  I'm actually realtively unfamiliar with all of the C directives out there.
> I've stuck to the typical "#define", "#ifdef", "#include" trio. ;^)
>
>
> Thx in advance,
>
> -bill!
>
> PS - I'm not currently using autoconf/automake in this project.  I'm not sure if I ever will decide to...
>
> --
> bill@newbreedsoftware.com                           Got kids?  Get Tux Paint!
> http://newbreedsoftware.com/bill/       http://newbreedsoftware.com/tuxpaint/
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
>

-- 
Mark K. Kim
http://www.cbreak.org/
PGP key available upon request.