From b70792995b5a0e4253ca83f09efa565c72a0cb88 Mon Sep 17 00:00:00 2001 From: ruki Date: Fri, 16 Sep 2016 22:27:55 +0800 Subject: fix vs201x filters bug --- CHANGELOG.md | 3 ++- .../project/vstudio/impl/vs201x_vcxproj_filters.lua | 15 +++++++++------ 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("") 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) - filtersfile:print("{%s}", os.uuid(filter)) - filtersfile:leave("") - exists[filter] = true + while filter and filter ~= '.' do + if not exists[filter] then + filtersfile:enter("", filter) + filtersfile:print("{%s}", os.uuid(filter)) + filtersfile:leave("") + exists[filter] = true + end + filter = path.directory(filter) end end filtersfile:leave("") -- cgit v1.3.1