1. Environment Variables plugin
These are system wide and can be set/overridden by the envvars plugin. It's helpful if your e.g. have another build systems besides C::B that uses envvars (like Makefiles). This way you can "share" this technology.
2. Custom Variables under Global Compiler
These are helpful to e.g. quickly change a path for a compiler suite. For example: You have gcc 4.2.0 and gcc 3.4.5 installed. The all have the same path structure so if you setup the main path to the executables as e.g "
D:\Devel\GCC$(GCC_VER)" and additional include/lib "
D:\Devel\GCC$(GCC_VER)\include"/"
D:\Devel\GCC$(GCC_VER)\lib" folders as you can easily switch between both compilers by just changing the custom variable. This would (of course) apply to *all* projects that use GCC.
3. Custom Variables under Project Build Options.
These are very helpful if you want to compile your project against two compiler as stated above. You can have two targets with different compilers. In addition you can (as you have stated already) easily append a "
d" to libs for the debug version, w.g.
wxmswud. The values are being overridden in the order of details - compiler custom variables are overridden by project CV's and project CV's are overridden by target CV's. It only makes sense that way... btw...
4. Where does Global variables fall in this order of precedence?
These variables have a very special meaning. In contrast to all others if you setup such a variables and share your project file with others that have *not* setup this GV C::B will ask the user to setup the variable. This is a very easy way to ensure the "other developer" knows what to setup easily. C::B will ask for all path's usually necessary.
For example where is the best place to put the WX_SUFFIX definition?
There is no best place. It really depends on your development habit. If you prefer release/debug targets, put it in the target CV's. If you prefer release/debug projects, put it in the project CV's. If you only use debug versions put it in the compiler CV's. Just exactly this way that reduces maintenance for
you.
With regards, Morten.