|
Boost : |
From: David Abrahams (david.abrahams_at_[hidden])
Date: 2002-07-20 09:03:23
----- Original Message -----
From: "Beman Dawes" <bdawes_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Saturday, July 20, 2002 9:30 AM
Subject: [boost] #include <boost/...> to #include "boost/..." transition?
> As has been discussed many times in the past, the C++ standard provides
> #include <...> for "headers" (which are only well-defined in the standard
> for the standard library), and #include "..." for "source files" (which
> includes the Boost header files). See section 16.2.
>
> For historical reasons relating to problem compilers, Boost code has
always
> used <boost/...> instead of "boost/...", and thus relies on
> implementation-defined behavior (16.2/2).
>
> The historical reasons no longer apply. Should we being to transition
> Boost code to the more correct #include "boost/..." form?
I guess I really don't understand the issues here. Other libraries I know
about that get installed in central locations on users' systems use <> by
convention as well. For example,
http://www.python.org/dev/doc/devel/ext/simpleExample.html says:
The first line of our file can be:
#include <Python.h>
What really determines whether a library header file is a "header" or a
"source file"?
What about other things outside the standard like threading support? Is it
#include <pthreads.h>
or
#include "pthreads.h"
?
I realize the standard has ideas about which is which, but existing
practice may be more-important than what the standard says in this case.
> My personal feeling is that, yes, we should begin a gradual transition.
New
> code should begin to use the #include "boost/..." form. Existing code
> should be modified over time, particularly when other changes are being
> made that will force recompilation anyhow.
>
> Comments?
Making a gradual transition might not be that simple. Toolset support (and
I don't mean Boost.Build, but the underlying toolsets here) for specifying
different search paths for "" and <> is inconsistent. Some of those
toolsets force you to make those paths completely separate; some don't
separate them at all. You can't always move something from <> to "" and
expect it to get picked up. Certainly we are currently using <sysinclude>
in Jamfiles to force (where possible) files to be found in the <> paths.
I've tried, as much as possible, to make the Boost.Build toolsets behave so
that "" searches <include> followed by <sysinclude>, while <> searches only
<sysinclude>, but as I've said underlying toolset support is inconsistent,
so it wasn't always possible.
-Dave
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk