summaryrefslogtreecommitdiff
path: root/xmake/plugins/project/vstudio/impl/vs201x.lua
diff options
context:
space:
mode:
authorSirLynix <[email protected]>2023-07-31 19:35:51 +0200
committerSirLynix <[email protected]>2023-07-31 19:35:51 +0200
commit5d92eb8501d693b15e0960f90d34983608fa6758 (patch)
tree121e5a878b80e5f5ae52082201d442ee1878a83b /xmake/plugins/project/vstudio/impl/vs201x.lua
parent05b62d2a23b5ad1cc8cf5df357f8c8cd0229e8c2 (diff)
vsproject generation: handle filegroups merging
Diffstat (limited to 'xmake/plugins/project/vstudio/impl/vs201x.lua')
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x.lua20
1 files changed, 18 insertions, 2 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua
index 39cfcc65c..cc00c6b8e 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x.lua
@@ -589,8 +589,24 @@ function make(outputdir, vsinfo)
table.sort(_target.headerfiles)
-- save file groups
- _target.filegroups = target:get("filegroups")
- _target.filegroups_extraconf = target:extraconf("filegroups")
+ _target.filegroups = table.unique(table.join(_target.filegroups or {}, target:get("filegroups")))
+
+ for filegroup, groupconf in pairs(target:extraconf("filegroups")) do
+ _target.filegroups_extraconf = _target.filegroups_extraconf or {}
+ local mergedconf = _target.filegroups_extraconf[filegroup]
+ if not mergedconf then
+ mergedconf = {}
+ _target.filegroups_extraconf[filegroup] = mergedconf
+ end
+
+ if groupconf.rootdir then
+ mergedconf.rootdir = table.unique(table.join(mergedconf.rootdir or {}, table.wrap(groupconf.rootdir)))
+ end
+ if groupconf.files then
+ mergedconf.files = table.unique(table.join(mergedconf.files or {}, table.wrap(groupconf.files)))
+ end
+ mergedconf.plain = groupconf.plain or mergedconf.plain
+ end
-- make target headers
_make_targetheaders(mode, arch, target, mode_idx == #vsinfo.modes and arch_idx == 2)