[Distutils] msvccompiler clobbers LIB/INCLUDE vars
theller at python.net
Thu Jan 22 03:24:16 EST 2004
"Mark Hammond" <mhammond at skippinet.com.au> writes:
>> It was decided in the early distutils development to prefer the
>> registry entries over env variables. Heck, most of my C/C++
>> developer collegues *never* run *anything* from the command line, or
>> even know about the msvcvars.bat, vcvars32.bat, and vsvars32.bat
>> batch files.
> Yes, I understand, hence my question about the intent.
>> Given the amount of complaints we get here about this, maybe the
>> decision was wrong.
> Do you get alot about this exact same thing? If so, I see no reason not to
> honour *both* LIB and the registry. Users who never run these batchfiles or
> use the commandline should have a fairly benign LIB/INCLUDE.
Most complaints that I remember were from users having 'broken' MSVC
installs - they installed MSVC, but never run the GUI, which is required
to complete the registry entries.
>> Can't you use the include_dirs and library_dirs arguments to the setup
> The problem is that these paths are local to my machine. Eg, you ask the
> user to install some random MS SDK, so it is this user that needs to specify
> the new path. I'm not sure of the best way to hook that up.
Well, distutils probably behaves the same as MS IDE - when you install
the platforma sdk, you have to register it with visual studio: there's a
start menu entry for this ;-).
> I did find it very confusing though - I knew that it was the compiler itself
> that used the LIB/INCLUDE vars, and was very surprised to find the compiler
> didn't see what I explicitly set in the environment.
> Is there a reason you can't do something like:
> os.environ["lib"] = get_registry_libs() + os.environ["lib"]
> instead of what you do currently:
> os.environ["lib"] = get_registry_libs()
> ? Putting what you read from the registry first should ensure the same
> semantics. I don't really care, as I will have to work something out for
> 2.2/2.3 too.
That may be, but IMO it's too late to change distutils. And usually
there's a workaround by subclassing a distutils command or whatever.
> I'm now sidetracked on what to do regarding the lack of
> install-script on 2.2 ;)
You should be able to use 2.3's distutils on 2.2 to build your
installation without problems. It is only needed on build time.
More information about the Distutils-SIG