
Stefan Seefeld wrote:
Vladimir Prus wrote:
Again, I'm thinking of platforms such as Fedora or Debian, which both have their own package management tools. If I want to develop software that is to use boost rpm or deb packages, I'd much appreciate some standardization of how to query the boost package(s) about required flags. If this isn't done as part of the boost project itself, packagers will do it, but probably not in a consistent way.
If this is done by Boost.Build, it's required the all packages use Boost.Build too. If they build boost in some other way, then there's nothing we can do.
Indeed. The point is really to make it *possible* for them to do it without boost developers having to care. If packagers build boost with bjam, but then rename libraries manually, they need to manually adjust the table. Still the whole process is transparent to users, as they would still look up library names in the same table.
I think that if packagers rename the libraries.... well nothing would work because then the name of the library encoded inside it will be different from the filename ;-) So, packages will either 1. Build boost in some other way 2. Make Boost.Build use the conventions they want. In either case, they'll know the naming conventions used and can generate .pc files without any Boost.Build help. Boost.Build support is only desired if packages will be created by "bjam --some-naming-convention", it which case packages won't have to do anything. It's also desired for those building from CVS and installing boost manually, bypassing package management system. Do we agree on the above?
Let's take a concrete example:
I want to use boost.wave, so I'm looking for a 'boost_wave.pc' file.
`pkgconfig --libs boost_wave`
should report something like '-lboost_wave -lboost_program_options -lboost_filesystem' on my FC box,
I think Boost packages for all Linux distribution will have exactly those names, so static .pc file can be fine.
but when using boost from CVS installed in /usr/local, the same command may report:
'-L/usr/local/lib -lboost_wave-gcc-1_33 -lboost_program_options-gcc-1_33 -lboost_filesystem-gcc-1_33'
You get the idea...
Ok, for installing from CVS the name indeed can vary. Note however, that for shared linking you don't need -l...program_options... and -l...filesystem... at all. BTW, where should .pc file be installed? $prefix/lib/pkgconfig or /usr/lib/pkgconfig? With arbitrary prefix, the .pc file just won't be found, which make it useless. - Volodya