-- -- vs2013_vcxitems.lua -- Generate a Visual Studio 201x C/C++ shared items project. -- Copyright (c) Jason Perkins and the Premake project -- local p = premake p.vstudio.vc2013 = {} local vstudio = p.vstudio local project = p.project local config = p.config local fileconfig = p.fileconfig local tree = p.tree local m = p.vstudio.vc2013 local vc2010 = p.vstudio.vc2010 --- -- Add namespace for element definition lists for p.callArray() --- m.elements = {} m.conditionalElements = {} -- -- Generate a Visual Studio 201x C++ project, with support for the new platforms API. -- m.elements.project = function(prj) return { vc2010.xmlDeclaration, m.project, m.globals, m.itemDefinitionGroup, m.itemGroup, vc2010.files, } end function m.generate(prj) p.utf8() p.callArray(m.elements.project, prj) p.out('') end -- -- Output the XML declaration and opening tag. -- function m.project(prj) p.push('') end -- -- Write out the Globals property group. -- m.elements.globals = function(prj) return { m.msbuildAllProjects, m.hasSharedItems, m.itemsProjectGuid, m.itemsProjectName, } end function m.globals(prj) vc2010.propertyGroup(nil, "Globals") p.callArray(m.elements.globals, prj) p.pop('') end function m.msbuildAllProjects(prj) vc2010.element("MSBuildAllProjects", nil, "$(MSBuildAllProjects);$(MSBuildThisFileFullPath)") end function m.hasSharedItems(prj) vc2010.element("HasSharedItems", nil, "true") end function m.itemsProjectGuid(prj) vc2010.element("ItemsProjectGuid", nil, "{%s}", prj.uuid) end function m.itemsProjectName(prj) if prj.name ~= prj.filename then vc2010.element("ItemsProjectName", nil, "%s", prj.name) end end -- -- Write an item definition group, which contains all of the shared compile settings. -- m.elements.itemDefinitionGroup = function(prj) return { m.clCompile, } end function m.itemDefinitionGroup(prj) p.push('') p.callArray(m.elements.itemDefinitionGroup, prj) p.pop('') end m.elements.clCompile = function(prj) return { m.additionalIncludeDirectories, } end function m.clCompile(prj) p.push('') p.callArray(m.elements.clCompile, prj) p.pop('') end function m.additionalIncludeDirectories(prj) vc2010.element("AdditionalIncludeDirectories", nil, '%s', '%(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)') end -- -- Write an item group, which contains the project capability -- m.elements.itemGroup = function(prj) return { m.projectCapability, } end function m.itemGroup(prj) p.push('') p.callArray(m.elements.itemGroup, prj) p.pop('') end function m.projectCapability(prj) p.w('') end