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

ver*_*872 6 matlab cmake mex

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

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

我试过查看CMake 的 FindMatlab 模块和其他几个位置。然而,大多数其他指南已经过时,甚至它们的参考链接也无法连接到它们的原始页面。

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

我目前无法使用#include "mex.h"#include "mex.hpp"#include "mexAdapter.hpp"等我也无法整理的功能没有main功能。

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

Cri*_*ngo 5

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

find_package(Matlab)
matlab_add_mex(NAME mex_file_name SRC source_file.cpp)
Run Code Online (Sandbox Code Playgroud)

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

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

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