www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Pass arguments at compile time

reply Malte <no valid.mail> writes:
I want to import a config file at compile time, but also need a 
way to have multiple configurations.

With gcc you could do something like 
-DIMPORTFROM='"MyConfigFile.txt"'. Is there any equivalent in D?

Hardcoding the config files for different versions and using that 
is not an option. Requiring a fixed filename and using different 
paths to configure with -J wouldn't be a good solution for my 
specific situation either.

So far my best idea was to write the wanted filename to a file 
and import twice.
enum config = import(import("importFrom.txt"));

That works, but that is additional work for the build script and 
feels like a hack.
Jun 13 2018
parent bauss <jj_1337 live.dk> writes:
On Wednesday, 13 June 2018 at 10:57:27 UTC, Malte wrote:
 I want to import a config file at compile time, but also need a 
 way to have multiple configurations.

 With gcc you could do something like 
 -DIMPORTFROM='"MyConfigFile.txt"'. Is there any equivalent in D?

 Hardcoding the config files for different versions and using 
 that is not an option. Requiring a fixed filename and using 
 different paths to configure with -J wouldn't be a good 
 solution for my specific situation either.

 So far my best idea was to write the wanted filename to a file 
 and import twice.
 enum config = import(import("importFrom.txt"));

 That works, but that is additional work for the build script 
 and feels like a hack.
If you're using dub just specify "stringImportPath" as a folder to the configuration files. You can't retrieve the files though, so you'd need to know the names of the files you want to use. However if they're located in the path then you can just do enum config = import("MyconfigFile.txt");
Jun 13 2018