我正在尝试使用Visual 2010中的cl构建32位版本的Mixxx。Mixxx使用SCons构建。我的计算机是Windows 7 64位,安装了太多版本的Visual .
在这些指示之后,我尝试了各种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对终端的意思仍然是"version 16,x86“。但是SCons总是使用“最新版本,x64”。
(根据我对Windows的理解,这是不可能的。我杀了剧本,所以它没有做任何清理。cl 的含义如何变化?)。
我发现了几个提示:
基于此,我增加了
Environment(MSVC_VERSION = '10.0')
Environment(TARGET_ARCH = 'x86')
print 'hello world'给SConstruct。我不知道SCons,而且构建脚本并不简单,所以很可能我做错了。无论如何,SCons仍然总是使用“最新版本,x64”。
发布于 2014-07-18 03:41:49
我打开了每一个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'哎呀--当我们第二次调用get_default_version时,我们似乎在使用不同的环境。我不太理解Mixxx构建脚本,不知道为什么,但我很确定这就是原因。
简单的解决办法
对于像我这样懒得修改构建脚本的人来说,有一种很简单(但很难看)的方法可以强迫SCons做你想做的事情。你只需要故意破坏你的新版本(当然是暂时的)。例如,我想使用2010年,x86。首先,我重命名所有较高版本的"VC“目录。
现在,SCons将使用2010 (又称“MicrosoftVisualStudio10.0”),因为所有更高的版本都不可用。选择目标体系结构是相似的。
发布于 2014-10-27 16:47:55
你为我发布的工作报告(Scon 2.3.4):
env = Environment(
MSVC_VERSION='12.0',
TARGET_ARCH='x86')
env.Program('src.cpp')根据TARGET_ARCH='x86_64',64位程序的值应该是TARGET_ARCH='x86_64'。MSVC_VERSION的其他值也可以工作。
发布于 2018-07-19 00:25:07
我尝试使用env = Environment(blabla)设置TARGET_ARCH,但没有帮助
因此,我在Scon目录中搜索'TARGET_ARCH‘(.\PythonDir\scons-3.0.1\ Scons )。在我的例子中,它位于Environment.py文件中,其中有一个具有默认值的节。我把“零”改为“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,使其重新生成。
而且起作用了!
https://stackoverflow.com/questions/24810474
复制相似问题