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

时间:2019-02-19 09:47:46

标签: matlab cmake mex

我想在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文件来提供帮助。

1 个答案:

答案 0 :(得分:1)

要编译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_TO library命令的末尾添加matlab_add_mex

关于使用新的C ++ API:我不记得是否有必要在R2018a调用中添加matlab_add_mex标志。与旧的C API(独立的复合体)相对,使用新的C API(复合体交错)时,此标志是必需的。我认为C ++ API并不是必须的,但是如果事情无法编译,请添加此标志以查看是否有帮助。