On Wed, 29 Jan 2014, Michael Van Canneyt wrote:



On Wed, 29 Jan 2014, hinst wrote:

I want to use an environment variable in FPC configuration file; is this not possible? I created sample project which demonstrates the problem. I have one main source file and one unit which is located
in subdirectory.
I try to compile my program with this bash script:
 
It looks like FPC does not substitute $mvar with meow. It does not compile my program.
However if I change options variable to this:
options="@cfg.txt -Mobjfpc pro.pas -Fu$mvar"
Then my program gets compiled successfully.

Obviously, since the bash interpreter takes care of substitution, FPC never sees $mvar.


It means that:
  If I put -Fu$mvar in config file then it does not work
  If I put -Fu$mvar in bash script then it does work
 
Which is strange because in standard config file fpc.cfg I can find not only built-in variables like $FPCVERSION but
also environment variables like $LOCAL_APPDATA
 
Examples:
-FuD:\Lazarus\fpc\$FPCVERSION/units/$fpctarget/httpd22
-Fu$LOCAL_APPDATA\FreePascal\fppkg/units/$FPCTARGET/*
This I do not understand. How come that FPC when reading config file understands $LOCAL_APPDATA, but does not
substitute variable I specified $mvar

Because there are several standard "placeholders" that FPC understands in the config file. These placeholders start with $.
They are not environment variables, despite the notation with $.

See globals.pas

         ReplaceSpecialFolder('$LOCAL_APPDATA',CSIDL_LOCAL_APPDATA);
         ReplaceSpecialFolder('$APPDATA',CSIDL_APPDATA);
         ReplaceSpecialFolder('$COMMON_APPDATA',CSIDL_COMMON_APPDATA);
         ReplaceSpecialFolder('$PERSONAL',CSIDL_PERSONAL);
         ReplaceSpecialFolder('$PROGRAM_FILES',CSIDL_PROGRAM_FILES);
         
ReplaceSpecialFolder('$PROGRAM_FILES_COMMON',CSIDL_PROGRAM_FILES_COMMON);
         ReplaceSpecialFolder('$PROFILE',CSIDL_PROFILE);

Is the standard list on Windows.

And looking a bit further, I just see that you CAN do environment variables,
if you enclose them in $$, so $mvar$ would do the trick.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to