Conditional compilation and DDoc

Lutger lutger.blijdestijn at gmail.com
Thu Aug 17 18:48:04 PDT 2006


Derek Parnell wrote:
> On Thu, 17 Aug 2006 13:21:32 +0200, Lutger wrote:
> 
>> Lutger wrote:
>>> Derek Parnell wrote:
>>>> I'm having trouble producing conditional documentation.
>>>>
>>>> Here's what I'm doing ...
>>>>
>>>>  version(XYZZY)
>>>>  {
>>>>     /**
>>>>     * macros:
>>>>     *   Extra = If you access this when the value is not set,
>>>>     *           an exception is thrown.
>>>>     */
>>>>  }
>>>>  module foo_m;
>>>>  /**
>>>>  *   Defines the capabilities and attributes of a Foo.
>>>>  *
>>>>  *   $(Extra)
>>>>  */
>>>>  class Foo
>>>>  {
>>>>     . . .
>>>>  }
>>>>
>>>> This doesn't work because the 'module' statement must be the first
>>>> statement and the earlier version statement messes that up.
>>>>
>>>> If I move the module to above the version statement, the macro doesn't 
>>>> get
>>>> defined.
>>>>
>>>> Anyone got any ideas about how to produce conditional DDoc documentation
>>>> without duplicating a lot of source code?
>>>>
>>> I can't get this to work either. I can think of one, less than ideal 
>>> workaround (haven't tried it yet): using build, move the macro's to ddoc 
>>> files and then use something like this:
>>> version (Foo)
>>> {
>>>     version (build) { pragma(include, macros\foo.ddoc); }
>>>     else pragma(msg, "warning, foo doc macro not included, use build");
>>> }
>> It works, thanks to build.
> 
> Confirmed. Using Build to include the macro Ddoc file works. 

Well aren't you lucky somebody wrote that fine little app...



More information about the Digitalmars-d-learn mailing list