如何配置 CMake 来编译 MEX 文件?

How to configure CMake to compile MEX-files?

我想在 CLion 而不是 MATLAB 中编译 MEX 文件(MATLAB 可执行文件)(这对编写 C 代码没有任何帮助)。但是,MEX 文件需要 #include mex.h(pp),这在普通 C++ 上不可用。此外,没有main功能的格式不同。

我正在使用 MATLAB R2018b 并希望通过 the new C++ API for MEX-files 使用 C++11。但是,我也可以使用旧的 API。

我曾尝试查看 CMake's FindMatlab module 和其他几个位置。但是,大多数其他指南都已过时,甚至它们的参考链接也无法连接到它们的原始页面。

我是 CMake 的绝对新手,我不知道从哪里开始。

我目前无法使用 #include "mex.h"#include "mex.hpp"#include "mexAdapter.hpp" 等。我也无法编译没有 main 函数的函数。

非常感谢任何可以通过上传或描述必要的 CMakeLists.txt 文件来提供帮助的人。

要编译 MEX 文件,您的 CMake 文件应包含:

find_package(Matlab)
matlab_add_mex(NAME mex_file_name SRC source_file.cpp)

mex_file_name是目标的名称,扩展名是自动添加的。这是一个普通目标,您可以在该目标上使用 set_target_propertiestarget_compile_definitions 等。

如果您的 MEX 文件需要 link 到库,请在 matlab_add_mex 命令末尾添加 LINK_TO library

关于使用新的 C++ API:我不记得是否有必要将 R2018a 标志添加到 matlab_add_mex 调用。当使用新的 C API(复杂的交错)而不是旧的 C API(单独的复杂)时,此标志是必需的。我认为 C++ 没有必要 API,但如果无法编译,请添加此标志以查看是否有帮助。