7

Visual Studio 2010 から使用して、 Mixxxclの 32 ビット バージョンをビルドしようとしています。Mixxx は SCons を使用してビルドします。私のコンピューターは、インストールされている Visual Studio のバージョンが多すぎる Windows 7 64 ビットです。

これらの指示に従って、あらゆる種類の組み合わせとバリエーションを試し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... ]

OK、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」を使用します。

(Windows シェルに関する私の理解に基づいて、これは可能でさえないはずです。スクリプトを強制終了したため、クリーンアップは行われませんでした。どうしてclそのような変更の意味が得られるのでしょうか?)

私はいくつかのヒントを見つけました:

これに基づいて、私は追加しました

Environment(MSVC_VERSION = '10.0')
Environment(TARGET_ARCH = 'x86')
print 'hello world'

SConstruct に。私は SCons を知りませんし、ビルド スクリプトも自明ではないため、私のやり方が間違っている可能性があります。それにもかかわらず、SCons は常に「最新バージョン x64」を使用します。

4

3 に答える 3

-1

env = Environment(blabla) を使用して TARGET_ARCH を設定しようとしましたが、役に立ちませんでした

そこで、Scons ディレクトリ (...\PythonDir\scons-3.0.1\Scons) で「TARGET_ARCH」を検索しました。私の場合、デフォルト値のセクションがあるEnvironment.pyファイルにありました。None「x86」に変更しました

# Now set defaults for TARGET_{OS|ARCH}
...
# self._dict['TARGET_ARCH']    = self._dict.get('TARGET_ARCH',None)
self._dict['TARGET_ARCH']    = self._dict.get('TARGET_ARCH','x86')

次に、以前にコンパイルしたEnvironment.pycを削除し、再生成しました

そしてそれは働いた!

于 2018-07-19T00:25:07.317 に答える