summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2016-09-16 22:27:55 +0800
committerruki <[email protected]>2016-09-16 22:27:55 +0800
commitb70792995b5a0e4253ca83f09efa565c72a0cb88 (patch)
tree869639d552577181773289d4645dbf5d8b78ecf3
parent388f45327004d82fa2261f680a2b89a4620609a4 (diff)
fix vs201x filters bug
-rw-r--r--CHANGELOG.md3
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua15
2 files changed, 11 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 27773fc62..12e5cbd95 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@
### Changes
* Improve ipairs and pairs interfaces and support filter
+* Add filters for generating vs201x project
### Bugs fixed
@@ -128,7 +129,6 @@
* Support switch static and share library
* Add -j/--jobs argument for supporting multi-jobs
-
### Changes
* Improve `add_files` api and support to add *.o/obj/a/lib files for merging static library and object files
@@ -168,6 +168,7 @@
### �Ľ�
* ��ǿipairs��pairs�ӿڣ�֧�ֹ�����ģʽ���򻯽ű�����
+* Ϊvs201x�������������ļ�filter
### Bugs�޸�
diff --git a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua
index 675664c51..969edf240 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua
@@ -67,13 +67,16 @@ function _make_filters(filtersfile, vsinfo, target, vcxprojdir)
-- add filters
filtersfile:enter("<ItemGroup>")
local exists = {}
- for _, filepath in pairs(table.join(target:sourcefiles(), target:headerfiles())) do
+ for _, filepath in pairs(table.join(target:sourcefiles(), (target:headerfiles()))) do
local filter = _make_filter(filepath, target, vcxprojdir)
- if filter and not exists[filter] then
- filtersfile:enter("<Filter Include=\"%s\">", filter)
- filtersfile:print("<UniqueIdentifier>{%s}</UniqueIdentifier>", os.uuid(filter))
- filtersfile:leave("</Filter>")
- exists[filter] = true
+ while filter and filter ~= '.' do
+ if not exists[filter] then
+ filtersfile:enter("<Filter Include=\"%s\">", filter)
+ filtersfile:print("<UniqueIdentifier>{%s}</UniqueIdentifier>", os.uuid(filter))
+ filtersfile:leave("</Filter>")
+ exists[filter] = true
+ end
+ filter = path.directory(filter)
end
end
filtersfile:leave("</ItemGroup>")