通过MATLAB mex从C获取预处理器输出

通过MATLAB mex从C获取预处理器输出,c,matlab,gcc,mex,C,Matlab,Gcc,Mex,我想在使用MinGW64编译器(c)和gcc(对吧?)通过MATLAB的mex编译c代码时获得预处理器输出。 从这一点我得到,您可以通过纯gcc将选项-E传递给gcc来实现这一点。 但是,我通过MATLAB应用程序安装了gcc,因此无法通过命令行访问它(如果不重新安装MinGW64并手动设置它以与MATLAB一起使用,我也希望有一个命令来执行此操作) 假设编译器标志是传递参数的正确方式,我尝试执行以下操作: mex -c grampc_run.c -I../../include -I../inc

我想在使用MinGW64编译器(c)和gcc(对吧?)通过MATLAB的mex编译c代码时获得预处理器输出。 从这一点我得到,您可以通过纯gcc将选项-E传递给gcc来实现这一点。 但是,我通过MATLAB应用程序安装了gcc,因此无法通过命令行访问它(如果不重新安装MinGW64并手动设置它以与MATLAB一起使用,我也希望有一个命令来执行此操作)

假设编译器标志是传递参数的正确方式,我尝试执行以下操作:

mex -c grampc_run.c -I../../include -I../include COMPFLAGS='$COMPFLAGS -E'

这只会导致创建对象文件。

COMPFLAGS
由MSCV编译器使用。GCC编译器查找“代码> cFLAGS < /Calp>和 CXXFLAGG/<代码>(分别用于C和C++编译)。看见因此,应使用以下语法:

mex -c grampc_run.c -I../../include -I../include CFLAGS='$CFLAGS -E'

您可能还希望将
-v
选项添加到
mex
。GCC将预处理器输出放在标准输出中,而标准输出可能不会显示给您。使用
-v
它确实会显示所有输出。

只是一个侧节点:我可以使用Visual Studio Developer命令提示符和:cl my\u file.c/p/I“c:\…\include”/I“c:\Program Files\MATLAB\R2018b\extern\include”/out:my\u file.I-->\p是VS中的正确标志