0

我发出以下命令:

find_file(MATLAB_ROOT matlab $ENV{ProgramW6432})
set(MATLAB_LIBS_DIRECTORY ${MATLAB_ROOT}/extern/lib/win64/microsoft)

find_library(MATLAB_MEX_LIB mex
  ${MATLAB_LIBS_DIRECTORY}
)

但它失败了MATLAB_MEX_LIB-NOTFOUND。我的路径似乎正确我可以使用以下命令轻松检索库文件:

find_file(LIB_FILE libmex.lib ${MATLAB_LIBS_DIRECTORY})

我正在使用 cmake 版本 2.8.9 在 Windows 7 中工作

4

2 回答 2

1

我发现了问题。我--trace在 cmake 中使用了选项,发现命令缺少后缀find_library

SET(CMAKE_FIND_LIBRARY_PREFIXES lib )
SET(CMAKE_FIND_LIBRARY_SUFFIXES .dll.a .a )

所以我将路径更改为:

set(MATLAB_LIBS_DIRECTORY ${MATLAB_ROOT}/bin/win64)

并调用了以下命令:

set(CMAKE_FIND_LIBRARY_SUFFIXES .dll .dll.a .a)
find_library(MATLAB_MEX_LIB mex
             PATHS ${MATLAB_LIBS_DIRECTORY}
             NO_DEFAULT_PATH
)

这次一切顺利。感谢弗雷泽的支持!

于 2013-01-08T07:09:43.120 回答
0

当您这样做find_library时,搜索会${CMAKE_STATIC_LIBRARY_PREFIX}添加到每个提供的名称之前(并且还会添加${CMAKE_STATIC_LIBRARY_SUFFIX})。

在 Windows 上,${CMAKE_STATIC_LIBRARY_PREFIX}为空;在 Unix 上它是“lib”,因此您需要在搜索名称前添加“lib”,仅适用于 Windows。您可以使用以下的长手版本来涵盖这两种情况find_library

find_library(MATLAB_MEX_LIB
                NAMES mex libmex
                PATHS ${MATLAB_LIBS_DIRECTORY}
                NO_DEFAULT_PATH  # Avoid searching outside MATLAB_LIBS_DIRECTORY
            )
于 2013-01-07T22:36:00.393 回答