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

Get preprocessor output from C through MATLAB mex

我想在使用 MinGW64 编译器 (C) 通过 MATLAB 的 mex 编译我的 c 代码时获得预处理器输出,因此使用 gcc(对吗?)。 从这个 post 我知道你可以用纯 gcc 将选项 -E 传递给 gcc 来做到这一点。 然而,我通过 MATLAB 应用程序安装了 gcc,因此无法通过命令行访问它(也希望有一个命令如何做到这一点,而无需重新安装 MinGW64 并手动设置它以用于 MATLAB)。

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

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

这只会导致目标文件的创建。

COMPFLAGS 由 MSCV 编译器使用。 GCC 编译器位于 CFLAGSCXXFLAGS(分别用于 C 和 C++ 编译)。参见 here。因此,您应该使用以下语法:

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

您可能还想将 -v 选项添加到 mex。 GCC 将预处理器输出放入标准输出,mex 可能不会向您显示。使用 -v 它会显示所有输出。