summaryrefslogtreecommitdiff
path: root/xmake/plugins/project
diff options
context:
space:
mode:
authorruki <[email protected]>2018-12-04 18:47:16 +0800
committerGitHub <[email protected]>2018-12-04 18:47:16 +0800
commit2b64bab746ff627dcbce239bce309bf63a3f2eaa (patch)
treefe14c35ad26e7cb296a38b36be4e8a0ab9091e1b /xmake/plugins/project
parent9c2497e8b3eb08b47323f38ed218702f833073cc (diff)
parentda267497a9677d4cfc7175d462494e1334823476 (diff)
Merge pull request #273 from orzuk-lmj/dev
improves the arch setting
Diffstat (limited to 'xmake/plugins/project')
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x.lua50
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x_solution.lua4
-rw-r--r--xmake/plugins/project/xmake.lua3
3 files changed, 42 insertions, 15 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua
index 7f8c619fe..b329d4e2a 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x.lua
@@ -163,6 +163,38 @@ function _make_targetheaders(mode, arch, target, last)
end
end
+function _make_vsinfo_modes()
+ local vsinfo_modes = {}
+ local modes = option.get("modes")
+ if modes then
+ for _, mode in ipairs(modes:split(',')) do
+ table.insert(vsinfo_modes, mode:trim())
+ end
+ else
+ vsinfo_modes = project.modes()
+ end
+ if not vsinfo_modes or #vsinfo_modes == 0 then
+ vsinfo_modes = { config.mode() }
+ end
+ return vsinfo_modes
+end
+
+function _make_vsinfo_archs()
+ local vsinfo_archs = {}
+ local archs = option.get("archs")
+ if archs then
+ for _, arch in ipairs(archs:split(',')) do
+ table.insert(vsinfo_archs, arch:trim())
+ end
+ else
+ vsinfo_archs = platform.archs()
+ end
+ if not vsinfo_archs or #vsinfo_archs == 0 then
+ vsinfo_archs = { config.arch() }
+ end
+ return vsinfo_archs
+end
+
-- make vstudio project
function make(outputdir, vsinfo)
@@ -173,23 +205,15 @@ function make(outputdir, vsinfo)
vsinfo.solution_dir = path.join(outputdir, "vs" .. vsinfo.vstudio_version)
-- init modes
- local modes = option.get("modes")
- if modes then
- vsinfo.modes = {}
- for _, mode in ipairs(modes:split(',')) do
- table.insert(vsinfo.modes, mode:trim())
- end
- else
- vsinfo.modes = project.modes()
- end
- if not vsinfo.modes or #vsinfo.modes == 0 then
- vsinfo.modes = { config.mode() }
- end
+ vsinfo.modes = _make_vsinfo_modes()
+
+ -- init archs
+ vsinfo.archs = _make_vsinfo_archs()
-- load targets
local targets = {}
for mode_idx, mode in ipairs(vsinfo.modes) do
- for arch_idx, arch in ipairs({"x86", "x64"}) do
+ for arch_idx, arch in ipairs(vsinfo.archs) do
-- trace
print("checking for the %s.%s ...", mode, arch)
diff --git a/xmake/plugins/project/vstudio/impl/vs201x_solution.lua b/xmake/plugins/project/vstudio/impl/vs201x_solution.lua
index b2c9e7705..3ed138ef8 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x_solution.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x_solution.lua
@@ -67,7 +67,7 @@ function _make_global(slnfile, vsinfo)
-- add solution configuration platforms
slnfile:enter("GlobalSection(SolutionConfigurationPlatforms) = preSolution")
for _, mode in ipairs(vsinfo.modes) do
- for _, arch in ipairs({"x86", "x64"}) do
+ for _, arch in ipairs(vsinfo.archs) do
slnfile:print("%s|%s = %s|%s", mode, arch, mode, arch)
end
end
@@ -78,7 +78,7 @@ function _make_global(slnfile, vsinfo)
for targetname, target in pairs(project.targets()) do
if not target:isphony() then
for _, mode in ipairs(vsinfo.modes) do
- for _, arch in ipairs({"x86", "x64"}) do
+ for _, arch in ipairs(vsinfo.archs) do
slnfile:print("{%s}.%s|%s.ActiveCfg = %s|%s", hash.uuid(targetname), mode, arch, mode, arch)
slnfile:print("{%s}.%s|%s.Build.0 = %s|%s", hash.uuid(targetname), mode, arch, mode, arch)
end
diff --git a/xmake/plugins/project/xmake.lua b/xmake/plugins/project/xmake.lua
index b42d5efae..71f1cd3db 100644
--- a/xmake/plugins/project/xmake.lua
+++ b/xmake/plugins/project/xmake.lua
@@ -51,6 +51,9 @@ task("project")
, " - xmake project -k makefile"
, " - xmake project -k compile_commands"
, " - xmake project -k vs2015 -m \"release,debug\"" }
+ , {'a', "archs", "kv", nil, "Set the project archs."
+ , " .e.g "
+ , " - xmake project -k vs2015 -a \"x86,x64\"" }
, {nil, "outputdir", "v", ".", "Set the output directory." }
}
}