我对编译内容非常陌生,并尝试使用以下(缩小的)内容来填充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。
答案 0 :(得分:1)
根据find_program
documentation,您有几种可能“暗示”CMake关于该计划的位置。
通过CMakeLists.txt
的修改(如果您是该脚本的作者):
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")
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 <...>