我发出以下命令:
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})
我在Windows 7中使用cmake版本2.8.9
答案 0 :(得分:1)
我发现了问题。我在cmake中使用了--trace
选项,发现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
)
这次一切都很顺利。感谢Fraser的支持!
答案 1 :(得分:0)
当您执行find_library
时,搜索会在${CMAKE_STATIC_LIBRARY_PREFIX}
之前添加每个提供的名称(并附加${CMAKE_STATIC_LIBRARY_SUFFIX}
)。
在Windows上,${CMAKE_STATIC_LIBRARY_PREFIX}
为空;在Unix上它是“lib”,所以你需要在你的搜索名称前面添加“lib”。您可以使用find_library
的长版本来涵盖这两种情况:
find_library(MATLAB_MEX_LIB
NAMES mex libmex
PATHS ${MATLAB_LIBS_DIRECTORY}
NO_DEFAULT_PATH # Avoid searching outside MATLAB_LIBS_DIRECTORY
)