diff options
| author | ruki <[email protected]> | 2021-10-15 23:57:07 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-10-15 23:57:07 +0800 |
| commit | d71f50b60d8872c1ab5fc92b21d9f41fe93983b3 (patch) | |
| tree | f26135cff47a67a688fc818ff3b5b6b7c6786b9b | |
| parent | 091e754eb4d5328385fed59d5c4f92e09355ff51 (diff) | |
improve to load moduledeps
| -rw-r--r-- | xmake/rules/c++/modules/build_modules/module_parser.lua | 12 | ||||
| -rw-r--r-- | xmake/rules/c++/modules/build_modules/msvc.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/c++/modules/xmake.lua | 9 |
3 files changed, 9 insertions, 14 deletions
diff --git a/xmake/rules/c++/modules/build_modules/module_parser.lua b/xmake/rules/c++/modules/build_modules/module_parser.lua index a3991a5e1..5ac4e42e9 100644 --- a/xmake/rules/c++/modules/build_modules/module_parser.lua +++ b/xmake/rules/c++/modules/build_modules/module_parser.lua @@ -20,14 +20,13 @@ -- imports import("core.project.depend") -import("utils.progress") -- get depend file of module source file function _get_dependfile_of_modulesource(target, sourcefile) return target:dependfile(sourcefile) end --- get depend file of module object file +-- get depend file of module object file, compiler will rewrite it function _get_dependfile_of_moduleobject(target, sourcefile) local objectfile = target:objectfile(sourcefile) return target:dependfile(objectfile) @@ -38,8 +37,8 @@ function _generate_moduledeps(target, sourcefile, opt) local dependfile = _get_dependfile_of_modulesource(target, sourcefile) depend.on_changed(function () - -- trace progress - progress.show(opt.progress, "${color.build.target}generating.deps %s", sourcefile) + -- trace + vprint("generating.moduledeps %s", sourcefile) -- generating deps local module_name @@ -76,6 +75,11 @@ end -- load module deps function load(target, sourcebatch, opt) + + -- do generate first + generate(target, sourcebatch, opt) + + -- load deps local moduledeps for _, sourcefile in ipairs(sourcebatch.sourcefiles) do local dependfile = _get_dependfile_of_modulesource(target, sourcefile) diff --git a/xmake/rules/c++/modules/build_modules/msvc.lua b/xmake/rules/c++/modules/build_modules/msvc.lua index 15be07a41..a463f036a 100644 --- a/xmake/rules/c++/modules/build_modules/msvc.lua +++ b/xmake/rules/c++/modules/build_modules/msvc.lua @@ -82,7 +82,7 @@ function build_with_batchjobs(target, batchjobs, sourcebatch, opt) -- load moduledeps local moduledeps = module_parser.load(target, sourcebatch, opt) - print(moduledeps) + --print(moduledeps) -- compile module files to object files local rootjob = opt.rootjob diff --git a/xmake/rules/c++/modules/xmake.lua b/xmake/rules/c++/modules/xmake.lua index ad36226eb..9018f5e2d 100644 --- a/xmake/rules/c++/modules/xmake.lua +++ b/xmake/rules/c++/modules/xmake.lua @@ -21,15 +21,6 @@ -- define rule: c++.build.modules rule("c++.build.modules") set_extensions(".mpp", ".mxx", ".cppm", ".ixx") - before_build(function (target, opt) - local sourcebatches = target:sourcebatches() - if sourcebatches then - local sourcebatch = sourcebatches["c++.build.modules"] - if sourcebatch then - import("build_modules.module_parser").generate(target, sourcebatch, opt) - end - end - end) before_build_files(function (target, batchjobs, sourcebatch, opt) -- we disable to build across targets in parallel, because the source files may depend on other target modules -- @note we cannot set it in on_load, because it will affect all c++ projects |
