Add pre- and post-build support to Visual Studio C# projects
This commit is contained in:
parent
432e99b2c9
commit
3dd3166c14
@ -21,6 +21,8 @@
|
||||
* Added debugcommand for Visual Studio (xpol)
|
||||
* Bug 1674173: Allow source files to have the same name
|
||||
* Added forceinclude() to specify forced include files
|
||||
* Visual Studio C# projects now support architectures
|
||||
* Visual Studio C# projects now support pre- and post-build commands
|
||||
|
||||
|
||||
-------
|
||||
|
@ -27,7 +27,7 @@
|
||||
cs2005.propertyGroup(cfg)
|
||||
cs2005.debugProps(cfg)
|
||||
cs2005.outputProps(cfg)
|
||||
cs2005.compilerProps(cfg)
|
||||
cs2005.compilerProps(cfg)
|
||||
_p(1,'</PropertyGroup>')
|
||||
end
|
||||
|
||||
@ -48,6 +48,8 @@
|
||||
_p(' </Target>')
|
||||
_p(' -->')
|
||||
|
||||
cs2005.buildEvents(prj)
|
||||
|
||||
_p('</Project>')
|
||||
end
|
||||
|
||||
@ -165,6 +167,26 @@
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Write out pre- and post-build events, if provided.
|
||||
--
|
||||
|
||||
function cs2005.buildEvents(prj)
|
||||
local function output(name, steps)
|
||||
if #steps > 0 then
|
||||
_x(2,'<%sBuildEvent>%s</%sBuildEvent>', name, table.implode(steps, "", "", "\r\n"), name)
|
||||
end
|
||||
end
|
||||
|
||||
if #prj.prebuildcommands > 0 or #prj.postbuildcommands > 0 then
|
||||
_p(1,'<PropertyGroup>')
|
||||
output("Pre", prj.prebuildcommands)
|
||||
output("Post", prj.postbuildcommands)
|
||||
_p(1,'</PropertyGroup>')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Write the compiler flags for a particular configuration.
|
||||
--
|
||||
|
88
tests/actions/vstudio/cs2005/test_build_events.lua
Normal file
88
tests/actions/vstudio/cs2005/test_build_events.lua
Normal file
@ -0,0 +1,88 @@
|
||||
--
|
||||
-- tests/actions/vstudio/cs2005/test_build_events.lua
|
||||
-- Check generation of pre- and post-build commands for C# projects.
|
||||
-- Copyright (c) 2012 Jason Perkins and the Premake project
|
||||
--
|
||||
|
||||
T.vstudio_cs2005_build_events = {}
|
||||
local suite = T.vstudio_cs2005_build_events
|
||||
local cs2005 = premake.vstudio.cs2005
|
||||
|
||||
|
||||
--
|
||||
-- Setup
|
||||
--
|
||||
|
||||
local sln, prj, cfg
|
||||
|
||||
function suite.setup()
|
||||
sln = test.createsolution()
|
||||
end
|
||||
|
||||
local function prepare(platform)
|
||||
prj = premake.solution.getproject_ng(sln, 1)
|
||||
cs2005.buildEvents(prj)
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- If no build steps are specified, nothing should be written.
|
||||
--
|
||||
|
||||
function suite.noOutput_onNoEvents()
|
||||
prepare()
|
||||
test.isemptycapture()
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- If one command set is used and not the other, only the one should be written.
|
||||
--
|
||||
|
||||
function suite.onlyOne_onPreBuildOnly()
|
||||
prebuildcommands { "command1" }
|
||||
prepare()
|
||||
test.capture [[
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>command1</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.onlyOne_onPostBuildOnly()
|
||||
postbuildcommands { "command1" }
|
||||
prepare()
|
||||
test.capture [[
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>command1</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.both_onBoth()
|
||||
prebuildcommands { "command1" }
|
||||
postbuildcommands { "command2" }
|
||||
prepare()
|
||||
test.capture [[
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>command1</PreBuildEvent>
|
||||
<PostBuildEvent>command2</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Multiple commands are separated with escaped EOL characters.
|
||||
--
|
||||
|
||||
function suite.splits_onMultipleCommands()
|
||||
postbuildcommands { "command1", "command2" }
|
||||
prepare()
|
||||
test.capture [[
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>command1
command2</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
]]
|
||||
end
|
||||
|
@ -88,6 +88,7 @@
|
||||
|
||||
-- Visual Studio 2005-2010 C# projects
|
||||
dofile("actions/vstudio/cs2005/test_assembly_refs.lua")
|
||||
dofile("actions/vstudio/cs2005/test_build_events.lua")
|
||||
dofile("actions/vstudio/cs2005/test_compiler_props.lua")
|
||||
dofile("actions/vstudio/cs2005/test_debug_props.lua")
|
||||
dofile("actions/vstudio/cs2005/test_files.lua")
|
||||
|
Reference in New Issue
Block a user