【问题标题】:Get preprocessor output from C through MATLAB mex通过 MATLAB mex 从 C 获取预处理器输出
【发布时间】:2019-06-21 08:54:44
【问题描述】:

我想在使用 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'

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

【问题讨论】:

  • 只是一个侧节点:我可以使用 Visual Studio 开发人员命令提示符执行此操作:cl my_file.c /P /I"C:\...\include" /I"C:\Program Files\MATLAB\R2018b\extern\include" /out:my_file.i --> \P 是 VS 中的正确标志

标签: c matlab gcc mex


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多