[Scons-users] compiler detection

William Deegan bill at baddogconsulting.com
Mon Oct 29 12:57:44 EDT 2012


Phil,
On Oct 29, 2012, at 9:42 AM, Philipp Kraus <philipp.kraus at flashpixx.de> wrote:


> On 2012-10-29 02:51:40 +0100, William Deegan said:

>

>> Phil,

>> On Oct 28, 2012, at 9:22 AM, Kraus Philipp <philipp.kraus at flashpixx.de> wrote:

>> Am 28.10.2012 um 16:50 schrieb William Deegan:

>> Phil,

>> On Oct 28, 2012, at 7:35 AM, Philipp Kraus <philipp.kraus at flashpixx.de> wrote:

>> On 2012-10-25 21:09:30 +0200, William Deegan said:

>> Phil,

>> On Oct 25, 2012, at 12:46 AM, Kraus Philipp <philipp.kraus at flashpixx.de> wrote:

>> Hello,

>> I'm using on Windows 7 Visual Studio and MinGW Shell with Gcc / G++. If I run Scons on the VS command line, Scons uses on env.Program the VS compiler (cl.exe), on the other hand if I run Scons from the MinGW shell, it uses also the cl.exe, but not the g++.exe. I can now overwrite the CXX / CC flag in the env, but why does Scons uses always the Visual Studio compiler? The PATH variable under MinGW shell does not have any path information to Visual Studio. IMHO I would like to detect and use under VS command line the VS compiler & linker (cl.exe & link.exe) and under MinGW shell the gcc / g++.

>> On win32 there's a list (in order) of the compilers to search for.

>> If you want to detect the platform and change the preferences, you can list the tools (mingw…) when you initialize the Environment() you are using.

>> Do you have got a code excerpt how to change this list?

>> Go read the man page.

>> http://www.scons.org/doc/production/HTML/scons-man.html (search for tool=)

>> Basically

>> Environment(tool=['mytool1','mytool2',…

>> You can see the list of tools in the man page as well.

>> I know the tool option, but how I can change the compiler search list? Should I rewrite the full tool list in the dependcy of my environment?

>> tool= overrides the default tool initialization

>> so

>> env=Environment(tool=[])

>> Initializes no tools, and then you could also add them via:

>> env.Tool('gcc')..

>

> My mistake was, that I does not have set the tool to []. I'm using now on MinGW env.Tool("mingw") and otherwise env.Tool("default"):

> That works fine.

>

> But I have got on MinGW a "shell" problem, because I use 2 env.Command lines, and this commands are always run on cmd.exe, but MinGW uses by default /bin/sh

> I try to setup env["SHELL"] = "/bin/sh" and the PATH variable in my env object, but by the env.Command line I get always that /bin/sh is not found (and the command

> creates an error).


Can you put:
if not os.path.exists('/bin/sh'):
print "I can't find that binary"

And see what it prints?

It could be that your python doesn't understand /bin/sh and expects /c/bin/sh or c:/bin/sh or something like that?

-Bill


More information about the Scons-users mailing list