Google Summer of Code
Jonathan M Davis
jmdavisProg at gmx.com
Mon Mar 7 08:45:52 PST 2011
On Monday 07 March 2011 02:03:15 Regan Heath wrote:
> On Sat, 05 Mar 2011 21:40:47 -0000, Jonathan M Davis <jmdavisProg at gmx.com>
>
> wrote:
> > So, for the current release, it's not a good idea to use -D when
> > compiling
> > actual code (and if you ever use version(D_Ddoc) yourself, it won't be a
> > good
> > idea ever), but that will be fixed by the next release. In the meantime,
> > you can
> > just skip using -D except when you're specifically generating
> > documentation.
>
> So.. assuming I'm using visual studio and visual D and want documentation
> I need to add a post-build step, or custom build action on all my source
> files to execute dmd -D on them? one at a time?
I don't know what the deal with visual D is. However, in addition to building
documentation, -D enables version(D_Ddoc), and like any other version statement,
that can totally change what code is created. In a number of cases, versioning
documentation with a declared but undefined function (so no body) is necessary
(for instance, if it's only one OS). Various Phobos developers quite correctly
used version(D_Ddoc) for this (that's what it's for). However, this means that
you _cannot_ use -D for a normal build, because in any case that version(D_Ddoc)
was used, there's a high chance that it will result in unlinkable code. So, you
have to build your documentation as a separate build.
Andrei decided that it was not reasonable to require that -D _have_ to be done
in a separate build for your average program, so druntime and Phobos will be
switching to using version(StdDoc) to version the documentation (using -
version=StdDoc as part of the build target which builds the docs for the std
libs), and that will be in by the next release. However, in the interim (and
permanently for any code which uses version(D_Ddoc)), you'll likely need to do -
D in a separate build if you want your code to work correctly.
How that relates to visual D, I have no idea. I've never used it.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list