-- -- Requires: Premake 5 (https://premake.github.io/) -- Usage: premake5 --file=premake5.lua [project / makefile format, refer to premake5 --help] --target=[target from below] -- -- target option tbl_target_values = { { "windows", "VS2015 projects targeting Windows 32/64 bits" }, { "macosx", "Xcode4 projects targeting OS X" }, } newoption { trigger = "target", description = "Build environment and target to generate projects for.", allowed = tbl_target_values } -- validation target_env = _OPTIONS["target"] if not target_env then print "Command-line option --target is required with one of the following values:" for _, v in ipairs(tbl_target_values) do print(v[1]) end os.exit(1) end -- solution workspace "tinyxml2" tbl_platforms = {} if target_env == "windows" then tbl_platforms = { "x86", "x64", } elseif target_env == "macosx" then tbl_platforms = { "Universal64" } end platforms(tbl_platforms) tbl_configurations = { "Debug", "Release", } configurations(tbl_configurations) sln_location = ".projects/"..target_env location(sln_location) bin_location = ".artifacts/"..target_env obj_location = ".intermediate/"..target_env for _, p in ipairs(tbl_platforms) do for _, c in ipairs(tbl_configurations) do local pc = p.."-"..c filter{ "platforms:"..p, c } targetdir(bin_location.."/"..pc) libdirs(bin_location.."/"..pc) objdir(obj_location.."/"..pc) end end filter("not Release") optimize "Debug" symbols "On" filter{ "Release" } optimize "Full" filter{} -- projects project "tinyxml2" kind "staticlib" files { "tinyxml2.h", "tinyxml2.cpp" } project "xmltest" kind "consoleapp" links { "tinyxml2" } files { "xmltest.cpp" }