如何配置 CMake 来编译 MEX 文件?
How to configure CMake to compile MEX-files?
我想在 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 文件需要 link 到库,请在 matlab_add_mex
命令末尾添加 LINK_TO library
。
关于使用新的 C++ API:我不记得是否有必要将 R2018a
标志添加到 matlab_add_mex
调用。当使用新的 C API(复杂的交错)而不是旧的 C API(单独的复杂)时,此标志是必需的。我认为 C++ 没有必要 API,但如果无法编译,请添加此标志以查看是否有帮助。
我想在 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 文件需要 link 到库,请在 matlab_add_mex
命令末尾添加 LINK_TO library
。
关于使用新的 C++ API:我不记得是否有必要将 R2018a
标志添加到 matlab_add_mex
调用。当使用新的 C API(复杂的交错)而不是旧的 C API(单独的复杂)时,此标志是必需的。我认为 C++ 没有必要 API,但如果无法编译,请添加此标志以查看是否有帮助。