2

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 从命令行执行相同操作。

4

1 回答 1

2

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 选项指定选项文件。这样你就不需要修改官方的选项文件了。

于 2013-04-21T11:24:33.950 回答