Set variable at compile time
Craig Dillabaugh
cdillaba at cg.scs.carleton.ca
Wed Oct 30 13:32:56 PDT 2013
On Wednesday, 30 October 2013 at 20:19:11 UTC, Adam D. Ruppe
wrote:
> It won't really work on the command line alone, but the way I
> do it is a two step thing. First, make the thing use a config
> module:
>
> import myproject.config;
>
> alias Thing Thing_Impl!dim;
>
> then you go ahead and use Thing, which is instantiated with the
> dimension. Then the user makes a file:
>
> module myproject.config;
>
> enum dim = 10; // or whatever
>
>
> and compiles it all:
>
> dmd main.d yourlib.d config.d
>
> and it works out. They can swap out config.d for other files
> with other values and definitions on the command line to
> customize it.
>
>
> It would also be possible to provide a default if you go with
> the whole library route, compiling the default into the .lib
> and giving the default in the project include path, both of
> which would be overridden by the user's explicit config source
> file on the command line.
>
>
>
> So not as simple as -Ddim=10, but gets the job done. You can
> also use this technique with static if to version stuff out
> they don't want and other similar tasks; I actually like it
> better than -version for the most part.
This should work for what I want, and I was thinking of something
along these lines, but was hoping there might be a simpler
solution.
Craig
More information about the Digitalmars-d-learn
mailing list