【问题标题】:Visual Studio 2012 Compiler Update in MatlabMatlab 中的 Visual Studio 2012 编译器更新
【发布时间】:2013-04-09 04:36:33
【问题描述】:

Visual Studio 2012 编译器 2012 年 11 月 CTP (VS2012+) 提供对新 C++11 功能的访问。我想使用 VS2012+ 从 Matlab 2013a 构建 mex 文件; Matlab 2013a 支持普通的VS2012。 VS2012+可以制作Matlab 2013a吗?

Visual Studio 2012 编译器 2012 年 11 月 CTP: http://www.microsoft.com/en-us/download/details.aspx?id=35515

其他信息: 在 Visual Studio 2012 中,编译器更新通过进入项目设置激活,然后选择平台工具集为“Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)”。默认平台工具集是“Visual Studio 2012 (v110)”。我本来希望在编译器或链接器开关中看到这一点,但我无法发现任何差异。关键问题是如何通知 Visual Studio 2012 从命令行执行相同的操作。

【问题讨论】:

  • 您是否尝试过使用mex -setup 选择新的编译器?如果是这样,会发生什么?
  • 您可以在 Visual Studio 2012 和 Visual Studio 2010 之间进行选择。
  • 我会假设 VS2012+ 编译器将取代之前的 VS2012 编译器。您是否尝试过选择它并编译依赖于新功能的东西,看看它是否有效?在您的问题中包含此类信息会很有用。
  • VS2012 支持多平台工具集,因此可以存在多个版本的编译器;编译器没有被替换。我添加了有关此的信息。

标签: matlab visual-studio-2012


【解决方案1】:

Visual Studio 2012 Compiler Nov 2012 CTP 是一个单独的可执行文件,位于

C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2012 CTP

bin 子目录包含 cl.exe,它是新的编译器。 Visual Studio 2012 安装目录中存在同名文件。要使 Matlab 引用更新的编译器,请打开(在纯文本编辑器中)文件

C:\Program Files\MATLAB\R2013a\bin\win64\mexopts\msvc110opts.bat

并在编译器参数之前添加以下内容:

rem Override the compiler selection.
set COMPILERUPDATEDIR=C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2012 CTP
set PATH=%COMPILERUPDATEDIR%\bin\amd64;%COMPILERUPDATEDIR%\bin;%PATH%

这是可行的,因为 cl.exe 在 PATH 变量中是从左到右搜索的。

本地与全局选项文件

请注意,mexopts 目录中的选项文件不是由 Matlab 直接使用的;相反,它们被获取本地副本,然后将它们用作实际的选项文件。运行时

mex -setup

Matlab 获取全局选项文件的本地副本,并将其放置在可以通过运行带有 -v 选项的 mex 获得的目录中。这是默认选项文件。因此,如果您使用的是默认选项文件,则需要运行 mex -setup 来查看更改。

或者,您可能希望自己获取全局选项文件的本地副本,然后通过 mex 中的 -f 选项指定选项文件。这样就不需要修改官方的options文件了。

【讨论】:

  • 你知道我必须为matlab 2011b修改什么文件才能找到visual studio 2012吗?
  • 也许吧。看看我为Matlab 2013 and Visual Studio 2013/2015 做了什么。看看你是否可以按照同样的方法,创建你自己的相应文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多