Boost logo

Boost-Build :

From: Jurko Gospodnetić (jurko.gospodnetic_at_[hidden])
Date: 2008-02-21 04:07:34


   Hi Eli.

>>> I've created a generator that lets me turn .ec (Informix ESQL) into .c
>>> files. This part works perfectly. The next part, actually compiling the .c
>>> file, is failing because the current directory is not being searched for
>>> header files. So where bjam is doing this:
>>>
>>> esql -e xxx.c
>>> gcc -c xxx.c
>>>
>>> I want to somehow convince it to do this:
>>>
>>> esql -e xxx.c
>>> gcc -I. -c xxx.c
>>>
>>> While I'm relatively familiar with normal Perforce Jam, bjam's build system
>>> is obviously a fair bit more complex and I get the feeling I can't just
>>> append "." to INCLUDE on $(<). If that IS possible, I just need to know
>>> where to do it.
>> How is compiling of a generated file .c different from compilation of
>> an ordinary .c file? If the header file is not generated,
>> then the 'include' feature allows to add an include path.
>>
>
> My ESQL rules look like this:
>
> type.register ESQL : ec ;
>
> generators.register-standard esql.file : ESQL : C ;
>
> actions file
> {
> "$INFORMIXDIR/bin/esql" -e $(>)
> mv $(>:B).c $(<)
> }
>
> In the environment I'm testing it in, $(<) is bin/gcc/debug/link-static/file.c
> and so when the compiler is called, I get this:
>
> g++ -o bin/gcc/debug/link-static/file.o bin/gcc/debug/link-static/file.c
>
> However, the header file that I need to include is in the source directory. So I
> need to add -I. to the command line; I guess that's <include>. as a feature. But
> I'm not sure how to do that since I'm not the one generating the rule to compile
> the .c file; boost.build is doing that for me.

   Ok, now I am confused about which include folder you would like to
add? Could you type in the exact commands you would like to get?

   If you want to get -IXXX when compiling any target in your exe you
can do something like this and add the <include> properties to the
target's requirements:

   exe myExe : ...your-sources-here... : <include>XXX ;

   Same can be done for a specific file if needed using the obj rule
(just use your .ec file as a source and Boost Build will pick up that it
needs to do .ec ==> .c ==> .o conversions) or for the whole project
using the project rule...

   Hope this helps.

   Best regards,
     Jurko Gospodnetić


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk