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

标签 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 文件来提供帮助的人。

最佳答案

要编译 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 文件需要链接到库,请在 matlab_add_mex 命令末尾添加 LINK_TO library

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

关于matlab - 如何配置 CMake 来编译 MEX 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54763204/

相关文章:

matlab - 如何在matlab中获得整数除法的商?

dll - generate_export_header 典型用法

Cmake 提示参数数量错误

c++ - 无法在 CMake 项目中使用 Q_OBJECT 宏

c++ - 将 vector 传递给函数并返回 vector 并重铸

c++ - MATLAB 如何更改默认编译器?

performance - 从矩阵中减去每个向量元素的有效方法

matlab - |Ubuntu 18.04, opencv-3.4.0, MATLAB/R2018a| make 因对 cv::dnn::eperimental 的 undefined reference 而失败

c++ - 尝试使用 header 从 C++ 访问 matlab

linux - 如何告诉 mex 链接到/usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的那个?