Home > OS >  CMake couldn't find MatLab libraries, even though MatLab is detected
CMake couldn't find MatLab libraries, even though MatLab is detected

Time:03-30

I have been trying to build BlockFactory and I keep getting following error when trying to build it.

PS F:\simconnect-monitor\blockfactory> cmake -S . -B build
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.19044. 
-- The CXX compiler identification is MSVC 19.16.27045.0 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe - skipped 
-- Detecting CXX compile features 
-- Detecting CXX compile features - done 
-- Could NOT find Matlab (missing: Matlab_MEX_LIBRARY Matlab_MX_LIBRARY ENG_LIBRARY) (found version "9.10") 
CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
    Could NOT find Matlab (missing: Matlab_MEX_LIBRARY Matlab_MX_LIBRARY   MX_LIBRARY) (found version "9.10") 

Call Stack (most recent call first):
   C:/Program Files/CMake/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
   cmake/FindMatlab.cmake:1873 (find_package_handle_standard_args)
   deps/mxpp/CMakeLists.txt:45 (find_package)

As you can see, MatLab was detected but the correct library cannot be found. I have tried with CMake 3.18.14 and 3.22.3 with no difference. I am really loss right now honestly. I have posted an issue in the BlockFactory GitHub but so far, it is still unresolved.

CodePudding user response:

So, I found the solution. I am using VS2017. By default for VS2017, cmake makes 32-bit project. You have to pass cmake -A x64 to force it to a 64-bit project. In addition to that, though, I have to force finfmatlab.cmake to only look for 64-bit library by basically setting _matlab_64build to always be true. Make sure you have 64-bit MatLab if you do this.

  • Related