
David Abrahams wrote:
Edward Diener
writes: All I can say it that this has worked from me as well as the testers in our matrix.
I have discovered the reason for the problem. It has to do with the form of #include in the Spirit 1.6x headers. The headers erroneously use, in some places, the form:
#include "boost/..."
rather than
#include
It's not "erroneously" exactly. Whether to include with quotes or angles has been a source of contention among Boost developers and there has been no agreement. I am in the latter camp, myself, but others seem to thing that the former is the only correct way.
One I changed the include for the Spirit 1.6.2 headers to use angles instead of quotes, the build worked correctly as expected. In the case of Boost, the only reason to use the former would be if one were specifically compiling from the Boost root directory and did not include the root directory in the compiler's path. I think this is a pretty rare case for using quotes. Whereas it kills the use of an alternative version of a library, in a separate directory, for a particular compiler, such as Spirit 1.6.2 for Borland while one uses the Boost directory for other libraries. I think it is "erroneous" in the sense that it is not needed since one can always add the Boost root directory to the include path. Also the latest Spirit uses all angle brackets and not quotes, so they must have realized the importance of doing so themselves. I think the Boost source and header files should always use angle brackets for all Boost headers, and the bug in correctly building the serialization libraries for Borland is a good example why. Not that every test suite can be totally thorough, but this situation, of building serialization by using SPIRIT_ROOT to point to a Spirit distribution outside the Boost tree, was very probably never tested else it would have been discovered previously.