[Scons-users] Still trouble using scons with MinGW

Sebastian Gesemann s.gesemann at gmail.com
Wed Jun 13 09:03:58 EDT 2012


Hallo!

Having skimmed the SCons documentation I wanted to test it and see how
I can avoid writing different Makefiles for different platforms. But I
can't get SCons to properly use the MinGW tool chain under Windows 7.

Here's what i did so far:

The project just covers two cpp files and a couple of headers all in
one directory:
main.cpp
linalg.cpp

The first SConstruct file with the content of just the following single line
Program('test',['main.cpp','linalg.cpp'])
made SCons print:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
cl /Folinalg.obj /c linalg.cpp /TP /nologo
Der Befehl "cl" ist entweder falsch geschrieben oder konnte nicht
gefunden werden.
scons: *** [linalg.obj] Error 1
scons: building terminated because of errors.

Since I currently don't have any Microsoft Compiler installed invoking
a non-existant "cl" won't work, of course. From the SCons FAQ I
learned that SCons does not automatically search for tool chains using
the PATH variable. So, I adjusted the SConstruct file accordingly:
import os
env = Environment(ENV = {'PATH':os.environ['PATH']})
env.Program('test',['main.cpp','linalg.cpp'])
which did not seem to help at all. SCons still tries to use the
compiler cl.exe even though it does not exist and it should be able to
find g++ using the PATH variable. On the official Wiki I found an
entry that tells me how I can make SCons prefer the MinGW tool chain
by:
import os
env = Environment(ENV = {'PATH':os.environ['PATH']})
Tool('mingw')(env)
env.Program('test',['main.cpp','linalg.cpp'])

Well, SCons went trying to invoke g++ but it did so with a
Microsoft-specific option which makes g++ fail:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o linalg.o -c /nologo linalg.cpp
g++: error: /nologo: No such file or directory
scons: *** [linalg.o] Error 1
scons: building terminated because of errors.

Is there a way of making it work WITHOUT having to hard-code MinGW
into SConstruct? This would kind of defeat the purpose of SCons,
wouldn't it?

TIA,
S.


More information about the Scons-users mailing list