我想在 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_properties
、target_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/