我想制作一个跨平台函数,如果在 MATLAB 下编译,该函数将具有额外的功能。 有没有一个定义可以给我这些信息?
换句话说,我的实现方式如下:
void f(void) {
if (x) {
(...)
}
#ifdef MATLAB
do_other_stuff();
#endif
}
我需要更换一些东西
#ifdef MATLAB
验证它是否在 matlab 下编译为 MEX 函数。
我的“>> mex -v”输出:
'>> mex -v
-> mexopts.sh sourced from directory (DIR = $HOME/.matlab/$REL_VERSION)
FILE = /home/bmmo/.matlab/R2009b/mexopts.sh
----------------------------------------------------------------
-> MATLAB = /usr/matlab2009b
-> CC = gcc
-> CC flags:
CFLAGS = -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread
CDEBUGFLAGS = -g
COPTIMFLAGS = -O -DNDEBUG
CLIBS = -Wl,-rpath-link,/usr/matlab2009b/bin/glnxa64 -L/usr/matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++
arguments = -DMX_COMPAT_32
-> CXX = g++
-> CXX flags:
CXXFLAGS = -ansi -D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -pthread
CXXDEBUGFLAGS = -g
CXXOPTIMFLAGS = -O -DNDEBUG
CXXLIBS = -Wl,-rpath-link,/usr/matlab2009b/bin/glnxa64 -L/usr/matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm
arguments = -DMX_COMPAT_32
-> FC = g95
-> FC flags:
FFLAGS = -fexceptions -fPIC -fno-omit-frame-pointer
FDEBUGFLAGS = -g
FOPTIMFLAGS = -O
FLIBS = -Wl,-rpath-link,/usr/matlab2009b/bin/glnxa64 -L/usr/matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm
arguments = -DMX_COMPAT_32
-> LD = gcc
-> Link flags:
LDFLAGS = -pthread -shared -Wl,--version-script,/usr/matlab2009b/extern/lib/glnxa64/mexFunction.map -Wl,--no-undefined
LDDEBUGFLAGS = -g
LDOPTIMFLAGS = -O
LDEXTENSION = .mexa64
arguments =
-> LDCXX =
-> Link flags:
LDCXXFLAGS =
LDCXXDEBUGFLAGS =
LDCXXOPTIMFLAGS =
LDCXXEXTENSION =
arguments =
----------------------------------------------------------------
提前致谢。
最佳答案
尝试运行
>> mex -v
在您的 Matlab 中检查它列出的 COMPFLAGS
。
在我的机器上,我看到 /DMATLAB_MEX_FILE
正在定义一个 const MATLAB_MEX_FILE
。我想其他平台也是如此,但值得提前检查。
关于c++ - 检查是否使用 MATLAB mex 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679744/