From 955f2bb283e338e10cb3616c25ed41db9103d6f2 Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Thu, 8 Feb 2024 14:30:37 +0100 Subject: support ProjectReferences for VS project generator --- xmake/plugins/project/vstudio/impl/vs201x.lua | 7 +++++++ xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua index d67a3f7a3..b3c6f84c2 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x.lua @@ -546,6 +546,13 @@ function make(outputdir, vsinfo) -- save file groups _target.filegroups = table.unique(table.join(_target.filegroups or {}, target:get("filegroups"))) + -- save references to deps + for _, dep in ipairs(target:orderdeps()) do + _target.deps = _target.deps or {} + local dep_name = dep:name() + _target.deps[dep_name] = path.relative(path.join(vsinfo.solution_dir, dep_name, dep_name .. ".vcxproj"), _target.project_dir) + end + for filegroup, groupconf in pairs(target:extraconf("filegroups")) do _target.filegroups_extraconf = _target.filegroups_extraconf or {} local mergedconf = _target.filegroups_extraconf[filegroup] diff --git a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua index 56850bbe3..ee21e88b1 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua @@ -218,6 +218,17 @@ function _make_header(vcxprojfile, vsinfo) vcxprojfile:enter("", assert(vsinfo.project_version)) end +-- make references +function _make_references(vcxprojfile, vsinfo, target) + vcxprojfile:print("") + for dep_name, dep_vcxprojfile in pairs(target.deps) do + vcxprojfile:print("", dep_vcxprojfile) + vcxprojfile:print("{%s}", hash.uuid4(dep_name)) + vcxprojfile:print("") + end + vcxprojfile:print("") +end + -- make tailer function _make_tailer(vcxprojfile, vsinfo, target) vcxprojfile:print("") @@ -1405,6 +1416,9 @@ function make(vsinfo, target) -- make source files _make_source_files(vcxprojfile, vsinfo, target) + -- make deps references + _make_references(vcxprojfile, vsinfo, target) + -- make tailer _make_tailer(vcxprojfile, vsinfo, target) -- cgit v1.3.1