From 8afecb8ec1a36f11788c4b79af91168b98ab89f8 Mon Sep 17 00:00:00 2001 From: Domain Date: Mon, 6 Jun 2022 11:17:21 +0800 Subject: Make sure the solution and project file unchanged by sorting those tables. Fix #2437 --- xmake/plugins/project/vsxmake/getinfo.lua | 9 +++++++++ xmake/plugins/project/vsxmake/vsxmake.lua | 1 + 2 files changed, 10 insertions(+) diff --git a/xmake/plugins/project/vsxmake/getinfo.lua b/xmake/plugins/project/vsxmake/getinfo.lua index a64381cd0..9c908ff1b 100644 --- a/xmake/plugins/project/vsxmake/getinfo.lua +++ b/xmake/plugins/project/vsxmake/getinfo.lua @@ -519,6 +519,7 @@ function main(outputdir, vsinfo) -- save deps _target.deps = table.unique(table.join(_target.deps or {}, table.keys(target:deps()), nil)) + table.sort(_target.deps) end end end @@ -552,6 +553,7 @@ function main(outputdir, vsinfo) end target._dirs = dirs target.dirs = table.keys(dirs) + table.sort(target.dirs) target._deps = {} for _, v in ipairs(target.deps) do target._deps[v] = targets[v] @@ -577,5 +579,12 @@ function main(outputdir, vsinfo) end vsinfo.targets = targetnames vsinfo._targets = targets + table.sort(vsinfo.targets) + table.sort(vsinfo.modes) + if type(vsinfo.archs) == "table" then + table.sort(vsinfo.archs) + end + table.sort(vsinfo.groups) + table.sort(vsinfo.group_deps) return vsinfo end diff --git a/xmake/plugins/project/vsxmake/vsxmake.lua b/xmake/plugins/project/vsxmake/vsxmake.lua index f475f431d..76c2acfa4 100644 --- a/xmake/plugins/project/vsxmake/vsxmake.lua +++ b/xmake/plugins/project/vsxmake/vsxmake.lua @@ -47,6 +47,7 @@ function _filter_files(files, includeexts, excludeexts) table.insert(f, file) end end + table.sort(f) return f end -- cgit v1.3.1 From 865e83ab57389215383a4c3f12903bef00d24129 Mon Sep 17 00:00:00 2001 From: Domain Date: Tue, 7 Jun 2022 11:51:44 +0800 Subject: user orderpairs/orderkeys --- xmake/plugins/project/vsxmake/getinfo.lua | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/xmake/plugins/project/vsxmake/getinfo.lua b/xmake/plugins/project/vsxmake/getinfo.lua index 9c908ff1b..493a78c83 100644 --- a/xmake/plugins/project/vsxmake/getinfo.lua +++ b/xmake/plugins/project/vsxmake/getinfo.lua @@ -421,8 +421,8 @@ function main(outputdir, vsinfo) -- init groups local groups, group_deps = _make_vsinfo_groups() - vsinfo.groups = table.keys(groups) - vsinfo.group_deps = table.keys(group_deps) + vsinfo.groups = table.orderkeys(groups) + vsinfo.group_deps = table.orderkeys(group_deps) vsinfo._groups = groups vsinfo._group_deps = group_deps @@ -518,8 +518,7 @@ function main(outputdir, vsinfo) _target.filegroups_extraconf = target:extraconf("filegroups") -- save deps - _target.deps = table.unique(table.join(_target.deps or {}, table.keys(target:deps()), nil)) - table.sort(_target.deps) + _target.deps = table.unique(table.join(_target.deps or {}, table.orderkeys(target:deps()), nil)) end end end @@ -552,8 +551,7 @@ function main(outputdir, vsinfo) end end target._dirs = dirs - target.dirs = table.keys(dirs) - table.sort(target.dirs) + target.dirs = table.orderkeys(dirs) target._deps = {} for _, v in ipairs(target.deps) do target._deps[v] = targets[v] @@ -563,7 +561,7 @@ function main(outputdir, vsinfo) -- we need set startup project for default or binary target -- @see https://github.com/xmake-io/xmake/issues/1249 local targetnames = {} - for targetname, target in pairs(project.targets()) do + for targetname, target in table.orderpairs(project.targets()) do if target:get("default") == true then table.insert(targetnames, 1, targetname) elseif target:is_binary() then @@ -579,12 +577,5 @@ function main(outputdir, vsinfo) end vsinfo.targets = targetnames vsinfo._targets = targets - table.sort(vsinfo.targets) - table.sort(vsinfo.modes) - if type(vsinfo.archs) == "table" then - table.sort(vsinfo.archs) - end - table.sort(vsinfo.groups) - table.sort(vsinfo.group_deps) return vsinfo end -- cgit v1.3.1