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

問題が見つかりました。--tracecmake でオプションを使用したところ、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」なので、Windows の場合のみ、検索名の前に「lib」を追加する必要があります。の長いバージョンを使用して、両方のケースをカバーできます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 に答える