如何使Visual Studio 2012调用本机64位Visual C++编译器而不是32位x64交叉编译器?

Meh*_*dad 7 c++ visual-c++ visual-studio-2012 visual-c++-2012

Visual Studio 2012似乎总是调用位于的32位版本而不是cl.exe位于%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin\x86_amd64的64 位版本%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin\amd64.

我尝试在属性表$(VCInstallDir)bin\amd64VC++目录部分的"可执行目录"列表的开头预先添加Microsoft.Cpp.x64.user,但这根本不起作用 - 当我重建时,我收到此错误:

TRACKER : error TRK0002: Failed to execute command: "
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64\CL.exe"
@C:\Users\<my_profile>\AppData\Local\Temp\tmpf3d817cafe064ad28e7dd62b2cb591c3.rsp
". The operation identifier is not valid.
Run Code Online (Sandbox Code Playgroud)

如何使Visual Studio 2012使用本机64位C++编译器?

Tan*_*aya 13

这个答案对于派对来说有点晚了,但令人沮丧的是,微软的在线文档中仍然没有直接可用的好资源.事实证明这很简单,即使不是很方便.

在命令提示符下,键入(根据需要更改VS的版本):

> set _IsNativeEnvironment=true
> "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe" YourProject.sln
Run Code Online (Sandbox Code Playgroud)

我的项目是由CMake生成的,所以在我打开VS之前,我通常会在命令提示符处输入几行.我在第一次设置MSVC环境后总是启动我的CMake生成器,所以老实说我不知道​​是否需要它,但你也可以选择(在其他一切之前):

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.targets
Run Code Online (Sandbox Code Playgroud)

和/或

<SetEnv Condition="'$(_IsNativeEnvironment)' == 'true'"
        Name ="PATH"
        Value ="$(NativeExecutablePath)"
        Prefix ="false">
  <Output TaskParameter="OutputEnvironmentVariable" PropertyName="Path"/>
</SetEnv>
Run Code Online (Sandbox Code Playgroud)

这是MSDN原始帖子的链接,我终于找到了答案.

  • 更新:对于VS2013,环境变量已更改.它现在是:'设置PreferredToolArchitecture = x64'参见[link](https://connect.microsoft.com/VisualStudio/feedback/details/800059/isnativeenvironment-true-no-longer-works-on-visual-studio-2013- RC) (4认同)