I’m trying to design an SConstruct file for an embedded system project. The compiler on my machine is at “C:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\bin” I would like the build system to try to locate the toolchain even if there is another verison of Embedded Workbench installed, or if the user has chosen to install it elsewhere.
I’d also be interested in strategies used in makefiles or ant files since they are probably useful here as well.
What are some strategies for doing this? Do I have options other than searching the Windows registry or looking for “C:\Program Files\IAR Systems\Embedded Workbench *\arm\bin”?
The simplest solution is to use an environment variable. You still have to set that up manually for each build host, but the build system need only refer to the environment variable, so can be common for all build hosts.
For example in your case you might have:
EWBARM_V0504=”C:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\bin”
And similar for other versions installed, and then in your build system you would use %EWBARM_V0504% in place of the path. The worse that will happen is if the variable does not exist the build will fail, which is preferable to using the wrong compiler, and easily fixed.