xmake icon indicating copy to clipboard operation
xmake copied to clipboard

Add `find_matlab()` Module

Open RoyiAvital opened this issue 5 years ago • 11 comments

Could you please add find_matlab() module similar to CMake's FindMatlab.cmake?

It should enable simple linking with MATLAB and creation of MEX files. The output should be similar to CMake:

  1. Matlab_FOUND.
  2. Matlab_ROOT_DIR.
  3. Matlab_INCLUDE_DIRS.
  4. Matlab_MX_LIBRARY.
  5. Matlab_LIBRARIES.

This will allow me creating a template for creation of a MEX file using xmake. This will assist increasing the exposure of xmake for MATLAB users.

RoyiAvital avatar Oct 06 '20 17:10 RoyiAvital

need only add find_matlab.lua at https://github.com/xmake-io/xmake/tree/master/xmake/modules/detect/sdks

But I don’t have enough disk space to install matlab, I can’t test it.

waruqi avatar Oct 07 '20 01:10 waruqi

Can we do it together. One way is just replicate what's in https://github.com/Kitware/CMake/blob/master/Modules/FindMatlab.cmake.

I just don't know Lua. But it seems on Windows it has information in registry and for other platforms it uses pre defined paths.

References

  1. https://github.com/xmake-io/xmake/blob/master/xmake/modules/detect/sdks/find_mingw.lua.
  2. https://github.com/xmake-io/xmake/blob/master/xmake/modules/detect/packages/find_openssl.lua.

RoyiAvital avatar Oct 08 '20 10:10 RoyiAvital

You can first write a separate find_matlab.lua file and run the following command to test it directly.

xmake l ./find_matlab.lua

find_matlab.lua

-- imports
import("lib.detect.find_file")
import("lib.detect.find_path")
import("lib.detect.find_library")

-- main entry
function main()
    -- do find
    -- ..
    return {includedirs = {"dir1", "dir2"}, links = "", libfiles = "", linkdirs = ""}
end

You can refer https://github.com/xmake-io/xmake/blob/master/xmake/modules/detect/packages/find_openssl.lua

waruqi avatar Oct 08 '20 10:10 waruqi

I will consider supporting it in the next version (v2.3.9) when i have enough disk space.

waruqi avatar Oct 12 '20 13:10 waruqi

Oh, I found that the matlab installation package actually needs more than 20G, I estimate that at least 50G of disk space needs to be reserved to complete the installation.

I'm very sorry, I may not be able to support matlab recently, because I can't clean enough space to install it on my win10 virtual machine.

waruqi avatar Oct 30 '20 01:10 waruqi

For the above you only need to install MATLAB which is ~4 [GB] only. You don't need any package. In the list only chose MATLAB.

image

Mark only this Check Box and leave all others empty.

RoyiAvital avatar Oct 30 '20 07:10 RoyiAvital

But the installer.rar installation package I downloaded is more than 20G. I need enough disk space to decompress and store installer.iso before running the installer.

Because I cannot download the trial package from the official website. So I downloaded the complete installation package from other places.

waruqi avatar Oct 30 '20 07:10 waruqi

I finished writing find_matlab.lua

function _find_matlab()
    local _ret = {}
    local matlabkey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB"
    local valuekeys = winos.registry_keys(matlabkey)
    if #valuekeys == 0 then
        return {}
    end
    local itemkey = valuekeys[1] .. ";MATLABROOT"
    local itemvalue
    try{
        function ()
            itemvalue = winos.registry_query(itemkey)
        end,
        catch{
            function (errors)
                return {}
            end
        }
    }

    _ret.Matlab_FOUND = true
    _ret.Matlab_ROOT_DIR = itemvalue
    _ret.Matlab_INCLUDE_DIRS = path.join(itemvalue,"extern","include")
    for _,value in ipairs(os.dirs(path.join(itemvalue,"extern","lib","**"))) do
        local dirbasename = path.basename(value)
        if not dirbasename:startswith("win") then
            _ret.MATLAB_LIB_DIRS = _ret.MATLAB_LIB_DIRS or {}
            _ret.MATLAB_LIB_DIRS[#_ret.MATLAB_LIB_DIRS + 1] = value
        end
    end

    for _,value in ipairs(_ret.MATLAB_LIB_DIRS) do
        _ret.Matlab_LIBRARIES = _ret.Matlab_LIBRARIES or {}
        local dirbasename = path.basename(value)
        _ret.Matlab_LIBRARIES[dirbasename] = os.files(value .. "/*.lib")
    end
    return _ret
end

function main(opt)
    local ret = {}
    if os.host() == "windows" then
        ret = _find_matlab()
    end
    return ret
end

And I test on my machine,the following result is returned

{ 
  MATLAB_LIB_DIRS = { 
    "D:\Matlab18\extern\lib\win64\microsoft",
    "D:\Matlab18\extern\lib\win64\mingw64"
  },
  Matlab_INCLUDE_DIRS = "D:\Matlab18\extern\include",
  Matlab_FOUND = true,
  Matlab_LIBRARIES = {
    microsoft = {
      "D:\Matlab18\extern\lib\win64\microsoft\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpu.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libeng.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmx.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\SimulinkBlock.lib"
    },
    mingw64 = {
      "D:\Matlab18\extern\lib\win64\mingw64\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpu.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libeng.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwfilcommon.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmx.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\SimulinkBlock.lib"
    }
  },
  Matlab_ROOT_DIR = "D:\Matlab18"
}

JackLin00 avatar Jul 24 '22 03:07 JackLin00

I finished writing find_matlab.lua

function _find_matlab()
    local _ret = {}
    local matlabkey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB"
    local valuekeys = winos.registry_keys(matlabkey)
    if #valuekeys == 0 then
        return {}
    end
    local itemkey = valuekeys[1] .. ";MATLABROOT"
    local itemvalue
    try{
        function ()
            itemvalue = winos.registry_query(itemkey)
        end,
        catch{
            function (errors)
                return {}
            end
        }
    }

    _ret.Matlab_FOUND = true
    _ret.Matlab_ROOT_DIR = itemvalue
    _ret.Matlab_INCLUDE_DIRS = path.join(itemvalue,"extern","include")
    for _,value in ipairs(os.dirs(path.join(itemvalue,"extern","lib","**"))) do
        local dirbasename = path.basename(value)
        if not dirbasename:startswith("win") then
            _ret.MATLAB_LIB_DIRS = _ret.MATLAB_LIB_DIRS or {}
            _ret.MATLAB_LIB_DIRS[#_ret.MATLAB_LIB_DIRS + 1] = value
        end
    end

    for _,value in ipairs(_ret.MATLAB_LIB_DIRS) do
        _ret.Matlab_LIBRARIES = _ret.Matlab_LIBRARIES or {}
        local dirbasename = path.basename(value)
        _ret.Matlab_LIBRARIES[dirbasename] = os.files(value .. "/*.lib")
    end
    return _ret
end

function main(opt)
    local ret = {}
    if os.host() == "windows" then
        ret = _find_matlab()
    end
    return ret
end

And I test on my machine,the following result is returned

{ 
  MATLAB_LIB_DIRS = { 
    "D:\Matlab18\extern\lib\win64\microsoft",
    "D:\Matlab18\extern\lib\win64\mingw64"
  },
  Matlab_INCLUDE_DIRS = "D:\Matlab18\extern\include",
  Matlab_FOUND = true,
  Matlab_LIBRARIES = {
    microsoft = {
      "D:\Matlab18\extern\lib\win64\microsoft\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpu.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libeng.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmx.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\SimulinkBlock.lib"
    },
    mingw64 = {
      "D:\Matlab18\extern\lib\win64\mingw64\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpu.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libeng.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwfilcommon.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmx.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\SimulinkBlock.lib"
    }
  },
  Matlab_ROOT_DIR = "D:\Matlab18"
}

you can open a pr and add it as system package to xmake-repo, like this

https://github.com/xmake-io/xmake-repo/blob/0e31570a2dd31f1f99e6fcebce278f9829b81b9a/packages/c/cuda/xmake.lua

waruqi avatar Jul 24 '22 14:07 waruqi

I finished writing find_matlab.lua

function _find_matlab()
    local _ret = {}
    local matlabkey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB"
    local valuekeys = winos.registry_keys(matlabkey)
    if #valuekeys == 0 then
        return {}
    end
    local itemkey = valuekeys[1] .. ";MATLABROOT"
    local itemvalue
    try{
        function ()
            itemvalue = winos.registry_query(itemkey)
        end,
        catch{
            function (errors)
                return {}
            end
        }
    }

    _ret.Matlab_FOUND = true
    _ret.Matlab_ROOT_DIR = itemvalue
    _ret.Matlab_INCLUDE_DIRS = path.join(itemvalue,"extern","include")
    for _,value in ipairs(os.dirs(path.join(itemvalue,"extern","lib","**"))) do
        local dirbasename = path.basename(value)
        if not dirbasename:startswith("win") then
            _ret.MATLAB_LIB_DIRS = _ret.MATLAB_LIB_DIRS or {}
            _ret.MATLAB_LIB_DIRS[#_ret.MATLAB_LIB_DIRS + 1] = value
        end
    end

    for _,value in ipairs(_ret.MATLAB_LIB_DIRS) do
        _ret.Matlab_LIBRARIES = _ret.Matlab_LIBRARIES or {}
        local dirbasename = path.basename(value)
        _ret.Matlab_LIBRARIES[dirbasename] = os.files(value .. "/*.lib")
    end
    return _ret
end

function main(opt)
    local ret = {}
    if os.host() == "windows" then
        ret = _find_matlab()
    end
    return ret
end

And I test on my machine,the following result is returned

{ 
  MATLAB_LIB_DIRS = { 
    "D:\Matlab18\extern\lib\win64\microsoft",
    "D:\Matlab18\extern\lib\win64\mingw64"
  },
  Matlab_INCLUDE_DIRS = "D:\Matlab18\extern\include",
  Matlab_FOUND = true,
  Matlab_LIBRARIES = {
    microsoft = {
      "D:\Matlab18\extern\lib\win64\microsoft\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpu.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libeng.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmx.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\SimulinkBlock.lib"
    },
    mingw64 = {
      "D:\Matlab18\extern\lib\win64\mingw64\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpu.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libeng.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwfilcommon.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmx.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\SimulinkBlock.lib"
    }
  },
  Matlab_ROOT_DIR = "D:\Matlab18"
}

you can open a pr and add it as system package to xmake-repo, like this

https://github.com/xmake-io/xmake-repo/blob/0e31570a2dd31f1f99e6fcebce278f9829b81b9a/packages/c/cuda/xmake.lua

OK. I will do it on the weekend

JackLin00 avatar Jul 26 '22 13:07 JackLin00

I finished writing find_matlab.lua

function _find_matlab()
    local _ret = {}
    local matlabkey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB"
    local valuekeys = winos.registry_keys(matlabkey)
    if #valuekeys == 0 then
        return {}
    end
    local itemkey = valuekeys[1] .. ";MATLABROOT"
    local itemvalue
    try{
        function ()
            itemvalue = winos.registry_query(itemkey)
        end,
        catch{
            function (errors)
                return {}
            end
        }
    }

    _ret.Matlab_FOUND = true
    _ret.Matlab_ROOT_DIR = itemvalue
    _ret.Matlab_INCLUDE_DIRS = path.join(itemvalue,"extern","include")
    for _,value in ipairs(os.dirs(path.join(itemvalue,"extern","lib","**"))) do
        local dirbasename = path.basename(value)
        if not dirbasename:startswith("win") then
            _ret.MATLAB_LIB_DIRS = _ret.MATLAB_LIB_DIRS or {}
            _ret.MATLAB_LIB_DIRS[#_ret.MATLAB_LIB_DIRS + 1] = value
        end
    end

    for _,value in ipairs(_ret.MATLAB_LIB_DIRS) do
        _ret.Matlab_LIBRARIES = _ret.Matlab_LIBRARIES or {}
        local dirbasename = path.basename(value)
        _ret.Matlab_LIBRARIES[dirbasename] = os.files(value .. "/*.lib")
    end
    return _ret
end

function main(opt)
    local ret = {}
    if os.host() == "windows" then
        ret = _find_matlab()
    end
    return ret
end

And I test on my machine,the following result is returned

{ 
  MATLAB_LIB_DIRS = { 
    "D:\Matlab18\extern\lib\win64\microsoft",
    "D:\Matlab18\extern\lib\win64\mingw64"
  },
  Matlab_INCLUDE_DIRS = "D:\Matlab18\extern\include",
  Matlab_FOUND = true,
  Matlab_LIBRARIES = {
    microsoft = {
      "D:\Matlab18\extern\lib\win64\microsoft\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpu.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libeng.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libmx.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\libut.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\microsoft\SimulinkBlock.lib"
    },
    mingw64 = {
      "D:\Matlab18\extern\lib\win64\mingw64\asynciocoder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpu.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\gpumexbinder.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libcovrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libemlrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libeng.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libfixedpoint.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabCppSharedLib.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabDataArray.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libMatlabEngine.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblas.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwblascompat32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwboxfilter3.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDTFT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwdistEDT_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwlookup_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwbwunpackctbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcannythresholding_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgir_construct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcgxert.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoderprofile.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CodeInstrTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_CoderAssumpTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_connectivity_memunit.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ParamTuningTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_RTIOStreamTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_target_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_ToAsyncQueueTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILHostAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwcoder_XILTgtAppSvc.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwComputeMetric.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwddist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgesobelprewitt_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwedgethinning_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwfilcommon.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwforegroundDetector.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgetnumcores.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayto8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwgrayxform_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimlincomb_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimregionalmax.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwimterp2d.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint16touint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint32touint32.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwint8touint8.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintlut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwintluttbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwipp.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippgeotrans.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippmedianfilter.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwippreconstruct.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwjpegreader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwlapack.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmathutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_binary_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_flat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_nonflat_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_ocv.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwmorphop_packed.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvgpumex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwocvmex.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwordfilt2.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwpolyfun.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremap.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwremaptbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2gray_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrgb2hsv_tbb.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwrtiostreamutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsdi_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwservices.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsigstream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsimulink.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_parallel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simbridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslexec_simlog.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_clients.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwslio_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsltest_raccel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_AsyncioQueue.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_fileio.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_log_load_blocks.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_services.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_cov_bridge.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_sfcn_loader.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_core.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_simtarget_instrumentation.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwsl_solver_rtw.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwstringutil.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwtbbhist.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwuint16toint16.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilcomms_rtiostream.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmwxilutils_sl.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libmx.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\libut.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclbase.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclcommain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcr.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclmcrrt.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\mclxlmain.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ne_mli.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\ocrutils.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_external_library_kernel.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_performance.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_core_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\physmod_common_foundation_sli_util.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\rtwcg.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\sf_runtime.lib",
      "D:\Matlab18\extern\lib\win64\mingw64\SimulinkBlock.lib"
    }
  },
  Matlab_ROOT_DIR = "D:\Matlab18"
}

you can open a pr and add it as system package to xmake-repo, like this

https://github.com/xmake-io/xmake-repo/blob/0e31570a2dd31f1f99e6fcebce278f9829b81b9a/packages/c/cuda/xmake.lua

OK. I will do it on the weekend

JackLin00 avatar Jul 26 '22 13:07 JackLin00

done

waruqi avatar Aug 11 '22 01:08 waruqi