On Thu, Nov 04, 2021 at 05:24:44PM +0000, Andrey Zherikov via 
Digitalmars-d-learn wrote:
> On Thursday, 4 November 2021 at 17:09:31 UTC, Steven Schveighoffer wrote:
> > D doesn't have any equivalent for this.
> 
> Is it possible to add this feature having `-C VERSION="1.2.3"` (`-D`
> is already used) to be equal to `enum VERSION="1.2.3"` in global
> namespace?
> 
> > The closest you can get is to turn on `version` identifiers.
> > 
> > There is also a quirky `-version=123` which is IMO, a completely
> > useless feature.
> 
> I agree - this is useless. `-version myversion=123` would be much more
> useful.

Here's a hack that uses dmd's stdin feature to inject D code into a
compile command:

        // main.d
        import __stdin : myversion;
        void main() {
                import std;
                writeln(myversion);
        }

Compile command:
        echo 'enum myversion = "1.2.3";' | dmd - -run main.d

Output:
        1.2.3

You can change the version number just by changing the echo command. And
of course, it doesn't have to be a string, it can be any valid D type,
and obviously you can declare more than one variable that can then be
read by importing from __stdin.


T

-- 
Don't throw out the baby with the bathwater. Use your hands...

Reply via email to