diff options
| author | ruki <[email protected]> | 2022-07-30 21:53:17 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-07-30 21:53:17 +0800 |
| commit | 792be350e4fb85cce9b610248a9ba0f7ff5666e9 (patch) | |
| tree | 2f1acab03ae8bd9f4f51d8bbd21a35eb06a13b84 | |
| parent | 934073e85ec7d17a68cbf812cc0a79cb936351b0 (diff) | |
fix submodules2 for msvc
| -rw-r--r-- | xmake/rules/c++/modules/build_modules/msvc.lua | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/xmake/rules/c++/modules/build_modules/msvc.lua b/xmake/rules/c++/modules/build_modules/msvc.lua index 7076bcaa5..0a8976468 100644 --- a/xmake/rules/c++/modules/build_modules/msvc.lua +++ b/xmake/rules/c++/modules/build_modules/msvc.lua @@ -102,15 +102,12 @@ function build_with_batchjobs(target, batchjobs, sourcebatch, opt) assert(stdifcdirflag, "compiler(msvc): does not support c++ module!") -- we need patch objectfiles to sourcebatch for linking module objects - local modulefiles = {} sourcebatch.sourcekind = "cxx" sourcebatch.objectfiles = sourcebatch.objectfiles or {} sourcebatch.dependfiles = sourcebatch.dependfiles or {} for _, sourcefile in ipairs(sourcebatch.sourcefiles) do local objectfile = target:objectfile(sourcefile) local dependfile = target:dependfile(objectfile) - local modulefile = (cachedir and path.join(cachedir, path.basename(sourcefile)) or objectfile) .. ".ifc" - table.insert(modulefiles, modulefile) table.insert(sourcebatch.objectfiles, objectfile) table.insert(sourcebatch.dependfiles, dependfile) end @@ -118,6 +115,16 @@ function build_with_batchjobs(target, batchjobs, sourcebatch, opt) -- load moduledeps local moduledeps, moduledeps_files = module_parser.load(target, sourcebatch, opt) + -- get modulefiles + local modulefiles = {} + for _, sourcefile in ipairs(sourcebatch.sourcefiles) do + local moduleinfo = moduledeps_files[sourcefile] or {} + -- make module file path, @note we need process submodule name, e.g. module.submodule.mpp -> module.submodule.ifc + -- @see https://github.com/xmake-io/xmake/issues/2614 + local modulefile = (cachedir and path.join(cachedir, moduleinfo.name or path.basename(sourcefile)) or objectfile) .. ".ifc" + table.insert(modulefiles, modulefile) + end + -- compile module files to object files local count = 0 local sourcefiles_total = #sourcebatch.sourcefiles |
