问题
I've upgraded my MATLAB to 2014b (on OS X 10.10), and tried to test some old MEX C/C++ codes.
As usual, I run mex -setup
from the command window, and I would expect to be provided the chance to overwrite the option file "meshopt.sh".
But now, it seems MATLAB has made some change and I am not allowed to change the MEX configuration, it simply says:
MEX configured to use Xcode with Clang for C language compilation,
...
to choose a different language, select one from the followingmex -setup C++ mex -setup FORTRAN
So, is it true that the old ways to modify "mexopts.sh" are no longer feasible?
回答1:
It seems that the following command works:
mex -setup my_mexopts.sh
however, there's some warning information,
Legacy MEX infrastructure is provided for compatibility; it will be removed in a future version of MATLAB.
Apart from that, everything looks fine, except I got some warning at compile time seems due to compiler version(gcc 4.9.1) on my current system(OS X 10.10).
gcc: warning: couldn't understand kern.osversion '14.0.0
回答2:
When I run mex -setup C
, I see information like the following:
Microsoft Visual C++ 2008 (C) mex -setup:H:\MATLAB\R2014b\bin\win64\mexopts\msvc2008.xml C
Microsoft Visual C++ 2010 (C) mex -setup:H:\MATLAB\R2014b\bin\win64\mexopts\msvc2010.xml C
Microsoft Visual C++ 2012 (C) mex -setup:H:\MATLAB\R2014b\bin\win64\mexopts\msvc2012.xml C
The mex
part is actually a link you can click to choose that configuration. So, to make your own:
- Choose an xml as a template and copy it. (e.g I'd copy
H:\MATLAB\R2014b\bin\win64\mexopts\msvc2012.xml
to%AppData%\MathWorks\MATLAB\R2014b\mex_C++_win64_custom.xml
). - Make the edits in the XML file, probably in the
<vars> tag
(e.g. modifyCOMPFLAGS
orCFLAGS
whatever variable has your compiler options) or the<env>
tag (e.g.PATH
,INCLUDE
,LIB
, etc.) Set that to the current configuration:
mex -setup:C:\[YourMATLABAppDataHere]\myCopts.xml C
Note that a good place in Windows to keep settings is under %APPDATA%
. For MATLAB R2014b, this would be something like C:\Users\[yourname]\AppData\Roaming\MathWorks\MATLAB\R2014b
.
Do the same for C++ or FORTRAN configurations too.
来源:https://stackoverflow.com/questions/26426160/matlab-no-longer-supports-user-defined-mex-configuration