diff options
| author | ruki <[email protected]> | 2020-12-30 00:41:23 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-12-30 00:41:23 +0800 |
| commit | 9c2899049a52d18afc04fc6a2a591efc3de83371 (patch) | |
| tree | 19921bd5650b025fb8786d98ac3f4e8291d9129d | |
| parent | 2982acc6a60e8808b0322d6e7c905442d58a0fe8 (diff) | |
fix groups for vsxmake
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 |
