我想在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
文件来提供帮助。
答案 0 :(得分:1)
要编译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并不是必须的,但是如果事情无法编译,请添加此标志以查看是否有帮助。