diff options
| author | ruki <[email protected]> | 2018-12-04 18:47:16 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-12-04 18:47:16 +0800 |
| commit | 2b64bab746ff627dcbce239bce309bf63a3f2eaa (patch) | |
| tree | fe14c35ad26e7cb296a38b36be4e8a0ab9091e1b /xmake/plugins/project | |
| parent | 9c2497e8b3eb08b47323f38ed218702f833073cc (diff) | |
| parent | da267497a9677d4cfc7175d462494e1334823476 (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.lua | 50 | ||||
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x_solution.lua | 4 | ||||
| -rw-r--r-- | xmake/plugins/project/xmake.lua | 3 |
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." } } } |
