How do I do this?
wxcvb via Digitalmars-d
digitalmars-d at puremagic.com
Thu Aug 3 05:58:30 PDT 2017
On Thursday, 3 August 2017 at 10:46:06 UTC, Shachar Shemesh wrote:
> The problem: I'm writing a library. This library has logging
> facilities, but where it's going to be used there are better
> logging facilities. Under C, that wouldn't be a big issue:
>
> log.h:
> #ifdef REAL_LOG_LIBRARY
> #include REAL_LOG_LIBRARY
> #else
>
> // Declarations go here
>
> #endif
>
>
> I can now inject from my build system
> -DREAL_LOG_LIBRARY=real/impl/log.h into the compilation command
> line, and I'm done.
>
> Under D, there is no facility to transfer a string from the
> command line to the code, so I can't use that approach.
>
> I seem to remember that D had an option of importing an
> external file as something (string? code? anything would do for
> my purposes). I cannot seem to find it, however. A search for
> "string import" and "import mixin" brought back nothing useful.
>
> Help?
> Shachar
You can rely on the file passed to the compiler like this too:
```
enum canImport(string mod) = is(typeof((){mixin("import " ~ mod ~
";");}));
static assert(canImport!"std.traits");
static assert(!canImport!"std.craps");
```
Although, tbh, i'm not sure very it solves the issue
More information about the Digitalmars-d
mailing list