Conditional compilation and DDoc

Lutger lutger.blijdestijn at gmail.com
Thu Aug 17 04:21:32 PDT 2006


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.



More information about the Digitalmars-d-learn mailing list