summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-12-30 00:41:23 +0800
committerruki <[email protected]>2020-12-30 00:41:23 +0800
commit9c2899049a52d18afc04fc6a2a591efc3de83371 (patch)
tree19921bd5650b025fb8786d98ac3f4e8291d9129d
parent2982acc6a60e8808b0322d6e7c905442d58a0fe8 (diff)
fix groups for vsxmake
-rw-r--r--xmake/plugins/project/vsxmake/getinfo.lua32
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/templates/sln/ProjectGroupConfig(group_dep)1
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/templates/sln/SubGroupConfig(group)1
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/templates/sln/TargetGroupConfig(target)1
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln3
-rw-r--r--xmake/plugins/project/vsxmake/vsxmake.lua6
6 files changed, 23 insertions, 21 deletions
diff --git a/xmake/plugins/project/vsxmake/getinfo.lua b/xmake/plugins/project/vsxmake/getinfo.lua
index b7255bb1c..17131d391 100644
--- a/xmake/plugins/project/vsxmake/getinfo.lua
+++ b/xmake/plugins/project/vsxmake/getinfo.lua
@@ -267,25 +267,27 @@ end
function _make_vsinfo_groups()
local groups = {}
+ local group_deps = {}
for targetname, target in pairs(project.targets()) do
if not target:isphony() then
local group_path = target:get("group")
if group_path then
+ local group_name = path.filename(group_path)
local group_names = path.split(group_path)
- for idx, group_name in ipairs(group_names) do
- local group = groups[group_name] or {}
- group.group = group_name
- group.group_id = hash.uuid4(group_name)
+ for idx, name in ipairs(group_names) do
+ local group = groups["group." .. name] or {}
+ group.group = name
+ group.group_id = hash.uuid4(name)
if idx > 1 then
- local parent_group_name = group_names[idx - 1]
- group.parent_group_id = hash.uuid4(parent_group_name)
+ group_deps["group_dep." .. name] = {current_id = group.group_id, parent_id = hash.uuid4(group_names[idx - 1])}
end
- groups[group_name] = group
+ groups["group." .. name] = group
end
+ group_deps["group_dep.target." .. targetname] = {current_id = hash.uuid4(targetname), parent_id = groups["group." .. group_name].group_id}
end
end
end
- return groups
+ return groups, group_deps
end
-- make vstudio project
@@ -318,9 +320,11 @@ function main(outputdir, vsinfo)
vsinfo.archs = _make_vsinfo_archs()
-- init groups
- local groups = _make_vsinfo_groups()
- vsinfo.groups = table.keys(groups)
- vsinfo._groups = groups
+ local groups, group_deps = _make_vsinfo_groups()
+ vsinfo.groups = table.keys(groups)
+ vsinfo.group_deps = table.keys(group_deps)
+ vsinfo._groups = groups
+ vsinfo._group_deps = group_deps
-- load targets
local targets = {}
@@ -397,12 +401,6 @@ function main(outputdir, vsinfo)
-- save deps
_target.deps = table.unique(table.join(_target.deps or {}, table.keys(target:deps()), nil))
-
- -- save group id
- local group_path = target:get("group")
- if group_path then
- _target.group_id = hash.uuid4(path.filename(group_path))
- end
end
end
end
diff --git a/xmake/plugins/project/vsxmake/vsproj/templates/sln/ProjectGroupConfig(group_dep) b/xmake/plugins/project/vsxmake/vsproj/templates/sln/ProjectGroupConfig(group_dep)
new file mode 100644
index 000000000..d08963bfb
--- /dev/null
+++ b/xmake/plugins/project/vsxmake/vsproj/templates/sln/ProjectGroupConfig(group_dep)
@@ -0,0 +1 @@
+ {#current_id#} = {#parent_id#}
diff --git a/xmake/plugins/project/vsxmake/vsproj/templates/sln/SubGroupConfig(group) b/xmake/plugins/project/vsxmake/vsproj/templates/sln/SubGroupConfig(group)
deleted file mode 100644
index 95015762a..000000000
--- a/xmake/plugins/project/vsxmake/vsproj/templates/sln/SubGroupConfig(group)
+++ /dev/null
@@ -1 +0,0 @@
- {#group_id#} = {#parent_group_id#}
diff --git a/xmake/plugins/project/vsxmake/vsproj/templates/sln/TargetGroupConfig(target) b/xmake/plugins/project/vsxmake/vsproj/templates/sln/TargetGroupConfig(target)
deleted file mode 100644
index 278eab9d8..000000000
--- a/xmake/plugins/project/vsxmake/vsproj/templates/sln/TargetGroupConfig(target)
+++ /dev/null
@@ -1 +0,0 @@
- {#target_id#} = {#group_id#}
diff --git a/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln b/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln
index 693ed4793..636f59909 100644
--- a/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln
+++ b/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln
@@ -28,8 +28,7 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
-#Import(TargetGroupConfig)#
-#Import(SubGroupConfig)# EndGlobalSection
+#Import(ProjectGroupConfig)# EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {#solution_id#}
EndGlobalSection
diff --git a/xmake/plugins/project/vsxmake/vsxmake.lua b/xmake/plugins/project/vsxmake/vsxmake.lua
index 557b0489d..926533dbf 100644
--- a/xmake/plugins/project/vsxmake/vsxmake.lua
+++ b/xmake/plugins/project/vsxmake/vsxmake.lua
@@ -73,6 +73,9 @@ function _buildparams(info, target, default)
if v == nil and i._groups then
v = i._groups[k]
end
+ if v == nil and i._group_deps then
+ v = i._group_deps[k]
+ end
if v == nil then
v = i[k]
end
@@ -103,6 +106,9 @@ function _buildparams(info, target, default)
if args.group then
table.insert(r, info.groups)
end
+ if args.group_dep then
+ table.insert(r, info.group_deps)
+ end
if args.dir then
table.insert(r, info._targets[target].dirs)
end