Boost logo

Boost-Build :

Subject: Re: [Boost-build] Adding 3rd party dependencies in jam file
From: Vladimir Prus (ghost_at_[hidden])
Date: 2010-03-20 14:10:52


Christian Henning wrote:
> Johan, thanks for your reply.
>
>> Maybe you could start out by checking the jamfiles for Boost.Regex (which can optionally use ICU) and perhaps Boost.Iostreams (which can optionally use ZLIB). If you hit upon any problems with this approach, please come back to the list with your questions.
>>
>
> I have been starring at the jam files for both of your mentioned
> projects. It's seems to me both projects take different ways in
> achieving their goals. I can see a mixture of using environment
> variables, shell script magic, and makefiles. It's still quite unclear
> how this can help me out.
>
> Here is what I have:
>
> 1. Header only library. No binary has to built to use the boost::gil extension
> 2. Only if a user wants to compile and run the unit tests he would
> have to set up all libs needed, e.g. people running regressions.
>
>
> Let's take apart what I need to have.
>
> 1. Setting up paths to all image format header files. There are two ways:
> a. Have one environment variable for all headers. This would assume
> all header file are in folder.
> b. Have one environment variable for each set of header files. I would
> prefer such way since it's more extensible when adding new formats
> with my extension.

OK.

> 2. When linking the user needs to set up paths to all library files
> needed by unit tests. Also, he needs to state the name of the
> binaries, e.g. libjpeg.lib. Of course the system needs to deal with
> static and dynamic libraries.

How are the static and dynamic libraries named, in your case? I believe
there's no universal convention for windows.

> 3. When running the unit tests all dynamically linked libs need to be
> available.

This is fortunately automatically handled by 'unit-test/run' metatargets.

> I suppose I could create a makefile that would define all variables
> and passes them to the boost build system. At least here the user
> doesn't need to mess with environment variables. But how this is done
> is quite unclear to me?
>
> I know my questions is rather broad but I have never dealt with these
> problems before. Some guidance would be very helpful.

maybe we can approach the problem from another end -- do you happen
to know, for each third-party dependency:

- The name of a header file that it surely has
- Name of a static library
- Name of a shared library

If you tell me that, and tell me the URL of your library, I can provide a
'seed' solution.

- Volodya


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