Re: Jam, Visual Studio, XBox 360

"Craft, Steven" <[email protected]>
Newsgroups gmane.games.devel.sweng
Message-ID <011AE49D146BF149982F73AD7EC3EFE7F7B992@wbwknupexmr01.intl.warnerbros.com>
Thanks for your reply. Someone has suggested I check out JamPlus, which
is able to generate a Visual Studio solution that builds with a Jamfile.
I have also managed to add the Wii platform into a Jamfile, so I can
generate a Visual Studio solution that builds on either Wii or Win32. A
problem I now have, is although this system is able to generate both Wii
and Win32 in one solution, the Wii will not build, as I have set it up
to add itself as another platform (in the dropdown box with Win32, Xbox
360, x64, and so on) but Visual Studio (2005 and 2008) appear to not
like building any platforms except ones MS has added. I presume the only
work around for this is to generate a lot of configurations like:

Win32_Debug|Win32
Win32_Release|Win32
Wii_Debug|Win32
Wii_Relase|Win32
PS3_Debug|Win32
PS3_Release|Win32
360_Debug|Win32	*
360_Release|Win32	*

*Although the two 360 configurations could use '360_Debug|Xbox 360' and
'360_Release|Xbox 360' respectively. This isn't an overly neat solution,
and I'm not actually sure if it is possible at all with JamPlus (I'm not
sure if you can set up debug/release style configurations that build on
completely different platforms). It seems MS has added custom platform
support for Visual Studio 2010 - but right now nothing seems to quite
fit together.

Any clues? I guess I could do a custom parse at the end of this process,
to fix up the .sln/.vcproj so the platform/configuration names are
'valid', but at that stage I'd start to question whether I'd be better
off just rolling my own code to do the lot from scratch (rather than
rely on third party code to do half the job, and try to pick up the
pieces after).

Steve

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
Grant Mark
Sent: 08 February 2010 17:04
To: [email protected]
Subject: Re: [Sweng-Gamedev] Jam, Visual Studio, XBox 360

Hi Steve,

While we don't actually use Jam, our build pipeline is similar to what
you're trying to achieve:
 * Visual Studio project generated for all target platforms/configs (ie.
debug|win, debug|x360, and so on)
 * "Unity" source code collation
 * Distributed builds using Incredibuild (win/x360) and SN-DBS (ps3).

The Visual Studio project files themselves are not in source control -
users
are expected to generate this locally on their machine using our tools.
The
Visual Studio project file is a fairly flexible XML document which
allows
you to provide per-platform and per-config compiler and linker settings,
so
you can maintain all of your config/platform-specific settings. I
imagine
there is some sturdy MSDN documentation on it... (:-/)

Essentially our tool scans the source folder for cpp files and collates
them
into large "unity" cpp files (ie. a cpp file that includes individual
project cpp files), then spits out a .sln and .vcproj. The generated
vcproj
will compile only these files; the actual individual files are added as
well, but are flagged as "Excluded from project". The magic is all in
the
generation of the sln/proj file, which uses additional "template" files
where our platform/config specific settings are defined. 

With that in place, we're able to launch the same builds from within
Visual
Studio or from the command-line (buildconsole.exe for Incredibuild,
vsibuild.exe for SN-DBS) - both have their own parameters but it
basically
boils down to the same thing: <solution file> <config|platform>
<project>
<build/rebuild>.

Whenever someone adds a new file to the project, they are free to check
it
in without having to modify any project or solution files. Whenever
someone
grabs the latest revision, they'll need to regenerate their project to
have
any new files automatically inserted into their unity cpp's. If they
don't,
the errors are fairly obvious (linker or file not found on #include are
the
typical ones). 

Having never actually used Jam, I'm not sure where it'd fit in to the
above
equation - you may be able to use it to emulate our sln/vcproj
generation
step somehow?

Sorry if that's not specific enough but I can't go into too much detail
unfortunately. Hope that's of some use.

Cheers,
Grant

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
Craft,
Steven
Sent: 08 February 2010 10:07
To: [email protected]
Subject: [Sweng-Gamedev] Jam, Visual Studio, XBox 360

Hi there,

I have seen some discussions touching on this area, but instead of
hijack said threads I thought I'd start a new one. I currently have to
maintain two (main) code building pipelines, one Visual Studio based
(for PC and 360), and one Makefile based (for Wii and PS3). I am
considering giving Incredibuild a go (I have about 50 programmers here,
and lots of non programmers, so a lot of cumulative processing power)
and have read Bizarre Creations case study of how they used Incredibuild
in conjunction with Jam to give them a unified build environment across
multiple platforms, including the ability to generate Visual Studio
projects from their jamfiles. I was wondering if anyone else does this?
I was interesting in whether this can be done with already available
software, or if they had to write their own. I'd be particularly
interested if it is possible to have this setup in a way that the Visual
Studio projects generated are good enough for submission, and include
the ability to set all the optimization options and so forth. Bizarre do
not list Wii as a platform they have integrated in this way, but
certainly I am very keen on finding a solution that works for all
platforms, and allows the end user to build for any platform using the
same system. So with Jam I'd like Visual Studio to call that when you
click build, and also be able to call Jam from the command line for
constant integration/disc build systems.

I don't really want many users messing around with project specific
settings, the only main change most users need to make to the build
system is adding new source files (as they introduce them), and I can
see with Jam it is quite straight forward to separate out this part of
the build from the compiler settings and so on, so that's good. If they
could update that file, and then regenerate the Visual Studio project
files and carry on working, that'd be good.

Also, if anyone has an opinion on Jam in general, I'd like to hear them!

Best regards,

Steve

_______________________________________________
Sweng-Gamedev mailing list
[email protected]
http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.
com

_______________________________________________
Sweng-Gamedev mailing list
[email protected]
http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.
com

_______________________________________________
Sweng-Gamedev mailing list
[email protected]
http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.