Cmake / matlab:FIND_PROGRAM找不到mex和mexext

时间:2017-05-03 10:23:48

标签: matlab cmake mex

我对编译内容非常陌生,并尝试使用以下(缩小的)内容来填充CMakeList.txt(评论是我对代码所做的解释):

FIND_PROGRAM(MEX_CMD mex)  # find programm mex and save in variable MEX_CMD
FIND_PROGRAM(MEXEXT_CMD mexext) # same for mexext

IF(MEX_CMD AND MEXEXT_CMD) # returns true if both variables exist, currently always returns false
    ...
ELSE()
MESSAGE(SEND_ERROR
    "Cannot find MATLAB or Octave instalation. Make sure that the 'bin' directory from the MATLAB instalation is in PATH"
)

由于if语句总是返回FALSE并且我收到错误消息,我认为它没有找到mex或/和mexext。我试图将包含这两个文件的目录添加到路径中而没有任何影响:

INCLUDE_DIRECTORIES(/usr/local/MATLAB/R2016a/bin)

现在我没有想法。问题出在哪里?另外,在bash中which -a mexext不返回任何内容。我使用的是ubuntu 16.10,cmake 3.5.2。

1 个答案:

答案 0 :(得分:1)

根据find_program documentation,您有几种可能“暗示”CMake关于该计划的位置。

通过CMakeLists.txt的修改(如果您是该脚本的作者):

    find_program的
  • PATHS HINTS 选项:

    find_program(MEX_CMD mex PATHS /usr/local/MATLAB/R2016a/bin)
    
  • 设置CMake变量 CMAKE_PROGRAM_PATH

    list(APPEND CMAKE_PROGRAM_PATH "/usr/local/MATLAB/R2016a/bin")
    
  • 设置CMake变量 CMAKE_PREFIX_PATH (不带/bin后缀):

    list(APPEND CMAKE_PREFIX_PATH "/usr/local/MATLAB/R2016a")
    
{p> 无需修改 CMakeLists.txt

  • 设置 PATH 环境变量(在执行cmake之前从shell开始):

     export PATH=$PATH:/usr/local/MATLAB/R2016a/bin
    
  • 将CMake变量 CMAKE_PROGRAM_PATH 传递给cmake

     cmake -DCMAKE_PROGRAM_PATH=/usr/local/MATLAB/R2016a/bin <...>
    
  • 将CMake变量 CMAKE_PREFIX_PATH (不带/bin后缀)传递给cmake

     cmake -DCMAKE_PREFIX_PATH=/usr/local/MATLAB/R2016a <...>