summaryrefslogtreecommitdiff
path: root/xmake/plugins/project/vstudio/impl/vs201x.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2017-03-23 09:49:07 +0800
committerruki <[email protected]>2017-03-23 09:49:07 +0800
commitdcf38006d36ec96bbc20be32f97ceb7b5f176821 (patch)
tree423b0feafb6a7ce1f733fcd44881b049855caa48 /xmake/plugins/project/vstudio/impl/vs201x.lua
parent1bdf43c3a7fcd6aa578e2b293664f0db80ebd058 (diff)
improve vs201x project plugin and add set_basename api
Diffstat (limited to 'xmake/plugins/project/vstudio/impl/vs201x.lua')
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x.lua34
1 files changed, 33 insertions, 1 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua
index ccf34db67..c7eea9c66 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x.lua
@@ -27,10 +27,42 @@ import("core.base.option")
import("core.project.config")
import("core.project.project")
import("core.platform.platform")
+import("core.tool.compiler")
+import("core.tool.linker")
import("vs201x_solution")
import("vs201x_vcxproj")
import("vs201x_vcxproj_filters")
+-- make target info
+function _make_targetinfo(mode, arch, target)
+
+ -- init target info
+ local targetinfo = { mode = mode, arch = ifelse(arch == "x86", "Win32", "x64") }
+
+ -- save symbols
+ targetinfo.symbols = target:get("symbols")
+
+ -- save target kind
+ targetinfo.targetkind = target:targetkind()
+
+ -- save sourcebatches
+ targetinfo.sourcebatches = target:sourcebatches()
+
+ -- save compiler flags
+ targetinfo.compflags = {}
+ for _, sourcefile in ipairs(target:sourcefiles()) do
+ local _, compflags = compiler.compflags(sourcefile, target)
+ targetinfo.compflags[sourcefile] = compflags
+ end
+
+ -- save linker flags
+ local _, linkflags = linker.linkflags(target)
+ targetinfo.linkflags = linkflags
+
+ -- ok
+ return targetinfo
+end
+
-- make vstudio project
function make(outputdir, vsinfo)
@@ -91,7 +123,7 @@ function make(outputdir, vsinfo)
_target.kind = target:get("kind")
_target.scriptdir = target:scriptdir()
_target.info = _target.info or {}
- table.insert(_target.info, { mode = mode, arch = ifelse(arch == "x86", "Win32", "x64"), target = target })
+ table.insert(_target.info, _make_targetinfo(mode, arch, target))
-- save all sourcefiles and headerfiles
_target.sourcefiles = table.unique(table.join(_target.sourcefiles or {}, (target:sourcefiles())))