We're running into problems compiling the boost math library with GCC's
TR1. The problem comes from Boost.TR1, and I believe the #include_next
preprocessor directive. We are using the Ubuntu packages for g++ and
for Boost 1.40 which installs the headers in /usr/include/boost.
Here's a simple example which fails to compile:
----
#define BOOST_HAS_TR1_TUPLE 1
#include
int main()
{
return 0;
}
----
$ g++ -I/usr/include -c -o tr1_test.o tr1_test.cpp
In file included from tr1_test.cpp:2:
/usr/include/boost/tr1/tuple.hpp:13:43: error: no include path in which
to search for tr1/tuple
----
From the docs, defining BOOST_TR1_DISABLE_INCLUDE_NEXT should work, but
does not. I have tried inserting the following lines before the
#include, to no effect.
#define BOOST_TR1_DISABLE_INCLUDE_NEXT
#define BOOST_TR1_GCC_INCLUDE_PATH /usr/include/c++/4.4
The only workaround I could find is to explicitly include
boost/tr1/detail/config.hpp and undef BOOST_HAS_INCLUDE_NEXT.
Am I missing something in the documentation? What is the proper solution?
PS: I see a similar problem mentioned over a year ago:
http://lists.boost.org/Archives/boost/2008/12/146552.php. But would
the changes mentioned have been included in 1.40? I see no obvious
changes between trunk and 1.40 for the tuple and config headers, though
I haven't diffed them.
--
Anthony Foglia
Princeton Consultants
(609) 987-8787 x233