diff options
| author | ruki <[email protected]> | 2016-08-06 16:15:31 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2016-08-06 16:15:31 +0800 |
| commit | d9f5c18a8f80dad25589f8fe9992ecfcc469e75d (patch) | |
| tree | 4907c0cbf57dca6913a1650e5fa7811137aa5e25 | |
| parent | ce3b9ada065d09d2d771061b20f07fc1d661c648 (diff) | |
add vsfile for vstduio plugin
| -rwxr-xr-x | xmake/plugins/project/vstudio/impl/vs200x.lua | 67 | ||||
| -rwxr-xr-x | xmake/plugins/project/vstudio/impl/vsfile.lua | 107 | ||||
| -rwxr-xr-x | xmake/plugins/project/vstudio/vs2005.lua | 10 | ||||
| -rwxr-xr-x | xmake/plugins/project/vstudio/vs2008.lua | 10 |
4 files changed, 180 insertions, 14 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs200x.lua b/xmake/plugins/project/vstudio/impl/vs200x.lua new file mode 100755 index 000000000..63e236062 --- /dev/null +++ b/xmake/plugins/project/vstudio/impl/vs200x.lua @@ -0,0 +1,67 @@ +--!The Make-like Build Utility based on Lua +-- +-- XMake is free software; you can redistribute it and/or modify +-- it under the terms of the GNU Lesser General Public License as published by +-- the Free Software Foundation; either version 2.1 of the License, or +-- (at your option) any later version. +-- +-- XMake is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Lesser General Public License for more details. +-- +-- You should have received a copy of the GNU Lesser General Public License +-- along with XMake; +-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a> +-- +-- Copyright (C) 2015 - 2016, ruki All rights reserved. +-- +-- @author ruki +-- @file vs200x.lua +-- + +-- imports +import("core.project.project") +import("vsfile") + +-- make +function make(outputdir) + + -- enter project directory + local olddir = os.cd(project.directory()) + + --[[ + local slnfile = vsfile.open(path.join(outputdir, "vs2008.sln"), "w") + if slnfile then + + slnfile:print("Microsoft Visual Studio Solution File, Format Version 10.00") + slnfile:print("# Visual Studio 2008") + slnfile:enter("Project") + slnfile:enter("ProjectSection(ProjectDependencies) = postProject") + slnfile:print("{ED657C29-5162-4124-AF9D-0F5889E7868A} = {ED657C29-5162-4124-AF9D-0F5889E7868A}") + slnfile:leave("EndProjectSection") + slnfile:leave("EndProject") + slnfile:enter("Project") + slnfile:leave("EndProject") + slnfile:enter("Global") + slnfile:enter("ProjectSection(ProjectDependencies) = postProject") + slnfile:enter("ProjectSection(ProjectDependencies) = postProject") + slnfile:print("1111") + slnfile:print("1111") + slnfile:print("1111") + slnfile:print("1111") + slnfile:leave("EndProjectSection") + slnfile:leave("EndProjectSection") + + slnfile:enter("ProjectSection(ProjectDependencies) = postProject") + slnfile:print("1111") + slnfile:leave("EndProjectSection") + slnfile:leave("EndGlobal") + + slnfile:close() + end + ]] + + -- leave project directory + os.cd(olddir) +end diff --git a/xmake/plugins/project/vstudio/impl/vsfile.lua b/xmake/plugins/project/vstudio/impl/vsfile.lua new file mode 100755 index 000000000..d478c33f6 --- /dev/null +++ b/xmake/plugins/project/vstudio/impl/vsfile.lua @@ -0,0 +1,107 @@ +--!The Make-like Build Utility based on Lua +-- +-- XMake is free software; you can redistribute it and/or modify +-- it under the terms of the GNU Lesser General Public License as published by +-- the Free Software Foundation; either version 2.1 of the License, or +-- (at your option) any later version. +-- +-- XMake is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Lesser General Public License for more details. +-- +-- You should have received a copy of the GNU Lesser General Public License +-- along with XMake; +-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a> +-- +-- Copyright (C) 2015 - 2016, ruki All rights reserved. +-- +-- @author ruki +-- @file vsfile.lua +-- + +-- print file +function _print(self, ...) + + -- print indent + for i = 1, self._indent do + self:_write(" ") + end + + -- print it + self:_print(...) +end + +-- printf file +function _printf(self, ...) + + -- print indent + for i = 1, self._indent do + self:_write(" ") + end + + -- printf it + self:_printf(...) +end + +-- write file +function _write(self, ...) + + -- print indent + for i = 1, self._indent do + self:_write(" ") + end + + -- write it + self:_write(...) +end + +-- enter and print file +function _enter(self, ...) + + -- print it + self:print(...) + + -- increase indent + self._indent = self._indent + 4 +end + +-- leave and print file +function _leave(self, ...) + + -- decrease indent + if self._indent >= 4 then + self._indent = self._indent - 4 + else + self._indent = 0 + end + + -- print it + self:print(...) +end + +-- open file +function open(filepath, mode) + + -- open it + local file = io.open(filepath, mode) + + -- hook print, printf and write + file._print = file.print + file._printf = file.printf + file._write = file.write + file.print = _print + file.printf = _printf + file.write = _write + + -- add enter and leave interfaces + file.enter = _enter + file.leave = _leave + + -- init indent + file._indent = 0 + + -- ok? + return file +end + diff --git a/xmake/plugins/project/vstudio/vs2005.lua b/xmake/plugins/project/vstudio/vs2005.lua index 14a6808ad..da87a4454 100755 --- a/xmake/plugins/project/vstudio/vs2005.lua +++ b/xmake/plugins/project/vstudio/vs2005.lua @@ -21,15 +21,11 @@ -- -- imports -import("core.project.project") +import("impl.vs200x") -- make function make(outputdir) - -- enter project directory - local olddir = os.cd(project.directory()) - - - -- leave project directory - os.cd(olddir) + -- make project + vs200x.make(outputdir) end diff --git a/xmake/plugins/project/vstudio/vs2008.lua b/xmake/plugins/project/vstudio/vs2008.lua index 8c1804e36..289581148 100755 --- a/xmake/plugins/project/vstudio/vs2008.lua +++ b/xmake/plugins/project/vstudio/vs2008.lua @@ -21,15 +21,11 @@ -- -- imports -import("core.project.project") +import("impl.vs200x") -- make function make(outputdir) - -- enter project directory - local olddir = os.cd(project.directory()) - - - -- leave project directory - os.cd(olddir) + -- make project + vs200x.make(outputdir) end |
