summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusernameak <[email protected]>2026-06-06 21:07:10 +0200
committerruki <[email protected]>2026-07-07 23:04:45 +0800
commit147fdfa379133d0d7d7f075ac9b4905401ff7126 (patch)
tree0f1d9e15d3093d9dab799a699ed6549684b9e5be
parent83369f6bea88b1820329d2a2addbbf640aa792aa (diff)
vsxmake: custom source types in solution explorer
This allows seeing source files added by add_files but not directly supported by xmake (e.g. when support is provided by a custom rule)
-rw-r--r--xmake/plugins/project/vsxmake/vsxmake.lua6
-rw-r--r--xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/#target#.vcxproj.filters3
-rw-r--r--xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/File.none(filenone)3
-rw-r--r--xmake/scripts/vsxmake/vsproj/templates/vcxproj/#target#.vcxproj3
-rw-r--r--xmake/scripts/vsxmake/vsproj/templates/vcxproj/File.none(filenone)1
5 files changed, 16 insertions, 0 deletions
diff --git a/xmake/plugins/project/vsxmake/vsxmake.lua b/xmake/plugins/project/vsxmake/vsxmake.lua
index cd61dfcbf..6084d6b84 100644
--- a/xmake/plugins/project/vsxmake/vsxmake.lua
+++ b/xmake/plugins/project/vsxmake/vsxmake.lua
@@ -150,6 +150,12 @@ function _buildparams(info, target, default)
elseif args.filecs then -- for c#
local files = info._targets[target].sourcefiles
table.insert(r, _filter_files(files, {".cs"}))
+ elseif args.filenone then -- for custom build steps
+ local files = info._targets[target].sourcefiles
+ table.insert(r, _filter_files(files, nil, {
+ ".c", ".cpp", ".cc", ".cxx", ".mpp", ".mxx", ".cppm", ".ixx",
+ ".cu", ".obj", ".o", ".rc", ".ui", ".qrc", ".ts", ".cs"
+ }))
elseif args.incc then
local files = table.join(info._targets[target].headerfiles or {}, info._targets[target].extrafiles)
table.insert(r, _filter_files(files, nil, {".natvis"}))
diff --git a/xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/#target#.vcxproj.filters b/xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/#target#.vcxproj.filters
index 998c8af83..7d8131262 100644
--- a/xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/#target#.vcxproj.filters
+++ b/xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/#target#.vcxproj.filters
@@ -50,6 +50,9 @@
#Import(File.qrc)#
#Import(File.ts)#
</ItemGroup>
+ <ItemGroup>
+#Import(File.none)#
+ </ItemGroup>
<Import Condition="Exists('$(MSBuildThisFileDirectory)\Xmake.Custom.files.filters')"
Project="$(MSBuildThisFileDirectory)\Xmake.Custom.files.filters" />
</Project>
diff --git a/xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/File.none(filenone) b/xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/File.none(filenone)
new file mode 100644
index 000000000..9aee25191
--- /dev/null
+++ b/xmake/scripts/vsxmake/vsproj/templates/vcxproj.filters/File.none(filenone)
@@ -0,0 +1,3 @@
+ <None Include="#path#">
+ <Filter>#dir#</Filter>
+ </None>
diff --git a/xmake/scripts/vsxmake/vsproj/templates/vcxproj/#target#.vcxproj b/xmake/scripts/vsxmake/vsproj/templates/vcxproj/#target#.vcxproj
index 21a7eb99a..a01ae9554 100644
--- a/xmake/scripts/vsxmake/vsproj/templates/vcxproj/#target#.vcxproj
+++ b/xmake/scripts/vsxmake/vsproj/templates/vcxproj/#target#.vcxproj
@@ -52,6 +52,9 @@
#Import(File.qrc)#
#Import(File.ts)#
</ItemGroup>
+ <ItemGroup>
+#Import(File.none)#
+ </ItemGroup>
<!-- <ItemGroup>
#Import(ProjectRef)#
</ItemGroup> -->
diff --git a/xmake/scripts/vsxmake/vsproj/templates/vcxproj/File.none(filenone) b/xmake/scripts/vsxmake/vsproj/templates/vcxproj/File.none(filenone)
new file mode 100644
index 000000000..6429fe3e9
--- /dev/null
+++ b/xmake/scripts/vsxmake/vsproj/templates/vcxproj/File.none(filenone)
@@ -0,0 +1 @@
+ <None Include="#path#" />