我正在尝试使用clVisual Studio 2010来构建32位版本的Mixxx.Mixxx使用SCons构建.我的计算机是Windows 7 64位,安装了太多版本的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... ]
Run Code Online (Sandbox Code Playgroud)
好的,所以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.
Run Code Online (Sandbox Code Playgroud)
(注意 - 我攻击了SCons删除了/nologo)什么?怎么cl现在的意思是"18版,64位"?它改变了我的环境吗?我们来看看:
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... ]
Run Code Online (Sandbox Code Playgroud)
所以cl仍然意味着"版本16,x86"到终端.但SCons总是使用"最新版本,x64".
(基于我对Windows shell的理解,这甚至不可能.我杀了脚本,所以它没有做任何清理.cl改变的意义怎么样?)
我发现了一些提示:
基于此,我补充道
Environment(MSVC_VERSION = '10.0')
Environment(TARGET_ARCH = 'x86')
print 'hello world'
Run Code Online (Sandbox Code Playgroud)
到SConstruct.我不知道SCons,并且构建脚本是非平凡的,所以很可能我做错了.无论如何,SCons仍然总是使用"最新版本,x64".
你为我发布了工作环境(Scons 2.3.4):
env = Environment(
MSVC_VERSION='12.0',
TARGET_ARCH='x86')
env.Program('src.cpp')
Run Code Online (Sandbox Code Playgroud)
对于一个64位的程序的值应TARGET_ARCH='x86_64'根据http://scons.1086193.n5.nabble.com/32-and-64-bit-builds-on-MSVC-td25425.html.其他价值观MSVC_VERSION也有效.
我根据 Dirkbaechle 的评论 ( ) 打开了日志记录set SCONS_MSCOMMON_DEBUG=-。这非常有帮助。当我添加Environment(MSVC_VERSION='10.0')到 SConstruct 时,我可以在输出中看到
get_default_version(): msvc_version:10.0 msvs_version:None
msvc_setup_env: using specified MSVC version '10.0'
[ ... truncated ... ]
get_default_version()
get_default_version(): msvc_version:None msvs_version:None
installed_vcs:['12.0', '10.0', '10.0Exp', '9.0']
msvc_setup_env: using default installed MSVC version '12.0'
Run Code Online (Sandbox Code Playgroud)
糟糕 - 当我们get_default_version第二次打电话时,我们似乎正在使用不同的环境。我不太了解 Mixxx 构建脚本,无法知道原因,但我很确定这就是原因。
对于像我这样懒得修复构建脚本的人来说,有一种简单(但丑陋)的方法可以强制 SCons 做你想做的事情。您只需要故意破坏您的新版本(当然是暂时的)。例如,我想使用2010,x86。首先,我重命名了所有高版本的“VC”目录。
现在 SCons 将使用 2010(又名“Microsoft Visual Studio 10.0”),因为所有更高版本均不可用。选择目标架构是类似的。