首页 > 解决方案 > 如何配置 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必要的文件来提供帮助的人。

标签: matlabcmakemex

解决方案


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

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

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

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

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


推荐阅读