Я пытаюсь использовать cl
из Visual Studio 2010 для создания 32-разрядной версии Mixxx. Mixxx использует SCons для сборки. На моем компьютере установлена 64-разрядная версия Windows 7, на которой установлено слишком много версий Visual Studio.
Следуя этим инструкциям, я пробовал всевозможные комбинации и варианты setenv
и vsvars
, но что бы я ни делал, я попадаю в командную строку в такой ситуации:
> cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
Итак, cl
указывает на "версию 16, x86" - отлично.
> scons toolchain=msvs force32=1 winlib=%cd%\winlib\x86 sqlitedll=0 staticlibs=1 asmlib=0
[... bunch of output truncated, until we start using the compiler ...]
cl /Fores\qrc_mixxx.obj /c res\qrc_mixxx.cc /TP /Zc:wchar_t- /GL /MP /fp:fast /G
[truncated]
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.21005.1 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
(Примечание - я взломал SCons, чтобы удалить /nologo
) Что? Как cl
теперь означает "версия 18, x64"? Изменило ли это мое окружение? Давайте разберемся:
Terminate batch job (Y/N)? y
>cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
Таким образом, cl
для терминала по-прежнему означает "версия 16, x86". Но SCons всегда использует «последнюю версию, x64».
Я нашел пару подсказок:
- http://scons.1086193.n5.nabble.com/Using-32-bit-MSVC-compiler-on-64-bit-Windows-td28062.html
- http://www.scons.org/wiki/MsvsMultipleVersions
- Принуждение scons к использованию старого компилятора?
На основании этого я добавил
Environment(MSVC_VERSION = '10.0')
Environment(TARGET_ARCH = 'x86')
print 'hello world'
в SConstruct. Я не знаю SCons, а скрипты сборки нетривиальны, так что вполне вероятно, что я делаю это неправильно. Тем не менее, SCons по-прежнему всегда использует «новейшую версию, x64».