主要内容

mbuild

结合 MATLAB 生成的共享库编译并链接源代码文件

说明

使用 mbuild 结合 MATLAB® 生成的共享库编译并链接源代码文件。

mbuildmcc 隐式调用,以生成 C 或 C++ mwArray 共享库。如需将其他 C 或 C++ 代码与这些共享库链接起来,您也可以显示调用该函数。

如果未列出平台,则该选项在 UNIX® 和 Windows® 上均可用。一些选项(-f-g-v)可通过 mcc 命令行使用,并传递给 mbuild。其他选项可以使用 -M 选项传递给 mcc。有关详细信息,请参阅 mcc -M

当使用 mbuild 命令手动集成 mcc 生成的共享库时,标志应该匹配。例如,如果将 -M -R2018a 传递给 mcc 命令,则应将 -R2018a 传递给 mbuild

任何传递给 mbuild 且未由 mbuild 自身使用的参量将被传递给 mex

mbuild [options] sourceFile 用于结合 MATLAB 生成的共享库编译并链接客户编写的 C 或 C++ 代码。

示例

示例

全部折叠

要更改与 MATLAB Compiler SDK™ 结合使用的默认 C/C++ 编译器,请使用

mbuild -setup

要结合 libfoo 编译并链接外部 C 程序 foo.c,请使用

mbuild foo.c -L. -lfoo (on UNIX)
mbuild foo.c libfoo.lib (on Windows)

这假设 foo.c 和上面生成的库均在当前工作文件夹中。

要结合 libfoo 编译并链接外部 C 程序 foo.c,请使用

mbuild foo.c -L. -lfoo (on UNIX)
mbuild foo.c libfoo.lib (on Windows)

这假设 foo.c 和上面生成的库均在当前工作文件夹中。

输入参数

全部折叠

要编译的文件,指定为字符向量或字符串标量。

支持的源代码文件类型为:

  • .c

  • .cpp

如果传递给 mbuild 的参量既不是选项,也不属于支持的源代码文件类型之一,则它们会被视为库名称并传递给链接器。

示例: "mylib.cpp"

选项

将文本文件 rspfile 的内容作为命令行参量传递给 mbuild。此选项仅在 Windows 上可用。

仅编译。仅创建目标文件。

为 C 预处理器定义一个符号名称。相当于源代码中的 #define <name> 指令。

如果您指定一个值,则会为 C 预处理器定义一个符号名称和值。相当于源代码中的 #define <name> <value> 指令。

请不要在 D<name> 之间添加空格,也不要在 = 符号前后添加空格。

示例: -DSPACE_PADDING

指定要使用的选项文件的位置和名称。覆盖 mbuild 默认选项文件搜索机制。通过此选项,您可以对编译器的不同调用使用不同的 ANSI 编译器。

您还可以使用 mcc 指定此选项。

创建包含用于调试的额外符号信息的可执行文件。此选项会禁用 mbuild 优化编译目标代码的默认行为(请参阅 -O 选项)。

输出 mbuild 的帮助信息。

<pathname> 添加到要搜索 #include 文件的文件夹列表中。

与目标库链接起来。在 Windows 系统上,<name> 扩展为 <name>.liblib<name>.lib,在 UNIX 系统上则扩展为 lib<name>.solib<name>.dylib

请不要在 I<name> 之间添加空格。

注意

与库链接时,必须先指定路径(例如,使用 -L<pathname> 进行指定)。

<folder> 添加到要搜索使用 -l 选项指定的库的文件夹列表中。在 UNIX 系统上,还必须设置运行时库路径。

-L 选项必须在 -l 选项之前使用。在 Linux®macOS 系统上使用 -L 选项时,还必须设置运行时库路径。有关详细信息,请参阅Set Run-Time Library Path

请不要在 L<folder> 之间添加空格。

输出 mbuild 本来要执行的任何命令,但实际上并不真正执行它们。

使用此选项可优化编译目标代码。默认启用优化。当指定 -g 选项而没有指定 -O 选项时,优化将被禁用。

将所有输出文件放入文件夹 <dirname>

创建名为 <resultname> 的可执行文件。系统将自动追加相应的可执行文件扩展名。覆盖 mbuild 默认可执行文件命名机制。

当您使用 mcc 函数生成基于 mxArray 的 C 共享库或基于 mwArray 的 C++ 共享库时,这些库默认对复数采用分开存储表示,这种表示会降低性能。要在这些共享库中使用交错存储表示,请在执行 mcc 命令时使用 -M R2018a 选项。

R2018a 选项包含:

R2017b 选项包含:

  • 分开复数 API,包含 MATLAB R2017b 及更早版本中提供的 C 和 Fortran 矩阵 API 功能。

  • 大数组处理 API,可处理包含超过 231–1 个元素的数组。

  • 将图形对象句柄作为 object 而不是 double 来处理。

MathWorks 建议您创建应用程序并更新现有应用程序,以使用 R2018a 选项中的交错复数 API。您也可以使用 MX_HAS_INTERLEAVED_COMPLEX 宏来在不同 MATLAB 版本中应用预期的行为。有关详细信息,请参阅MATLAB Support for Interleaved Complex API in MEX Functions

通过将 C/C++ 编译器选项文件放在用户配置文件夹(通过 prefdir 命令返回)中,以交互方式指定该文件用作将来调用 mbuild 的默认文件。在指定此选项时,不接受其他命令行输入。

通过将 COM 编译器选项文件放在用户配置文件夹(通过 prefdir 命令返回)中,以交互方式指定该文件用作将来调用 mbuild 的默认文件。在指定此选项时,不接受其他命令行输入。

删除 C 预处理器符号 <name> 的所有初始定义。(与 -D 选项相反的操作。)

启用详尽模式。在处理完选项文件并考虑了所有命令行参量之后,输出重要内部变量的值。输出完全计算的每个编译步骤和最终链接步骤。

补充或覆盖变量 <name> 的选项文件变量。在处理完选项文件并考虑了所有命令行参量之后,将处理此选项。您可能需要使用 shell 的引号语法来保护在 shell 语法中有意义的字符,例如空格。在 Windows 上使用双引号(例如,COMPFLAGS="opt1 opt2"),在 UNIX 上使用单引号(例如,CFLAGS='opt1 opt2')。

通常使用此选项来补充已定义的变量。为此,请在前面添加 $ 来引用变量(例如,在 Windows 上语法为 COMPFLAGS="$COMPFLAGS opt2",在 UNIX shell 上语法为 CFLAGS='$CFLAGS opt2')。

对于基于 gcc/g++ 的 MinGW-w64 编译器,请使用单引号 (')。

示例: COMPFLAGS="$COMPFLAGS opt2"

版本历史记录

在 R2006a 之前推出

另请参阅