
On 12/17/2009 07:03 AM, John Maddock wrote:
The problem here is present in pretty much every graph and property_map header, something like:
#ifdef BOOST_GRAPH_USE_MPI #include <boost/property_map/parallel/distributed_property_map.hpp> #include <boost/property_map/parallel/local_property_map.hpp>
//...
#endif
which means that the MPI dependency is conditional on whether BOOST_GRAPH_USE_MPI is set almost no matter what graph header you include.
BTW this has an impact for build tools like bjam (probably others as well) that perform quick regex based dependency analysis rather than preprocessing to build the dependency tree. As a result the graph headers will get marked as out of date if any MPI or serialization header is out of date, even if they're not actually being used :-(
Exactly. And I think this is a problem for packaging, too (which unfortunately boost developers don't seem to care much about): If you were to build a Boost.Graph binary package, what would it contain ? And what would it depend on ? If the above MPI extension was in a separate header, packagers could consider it as part of an extension package, and thus build a Boost.Graph package without it. However, as it stands, such a separation is impossible, so either this feature isn't available at all, or Boost.Graph depends on Boost.MPI (and thus Boost.Serialization, etc. etc.) (I seem to remember similar discussions with respect to dependencies on Boost.Serialization, but I don't recall whether there was any official policy that people agreed upon.) Thanks, Stefan -- ...ich hab' noch einen Koffer in Berlin...