Moving to another build system

Started by
10 comments, last by Mr Grinch 16 years ago
I'm in the process of looking at porting a lot of my native C++ projects to different platforms (Mac and a Ubuntu linux). Currently the code is being modified to be cross platform - pure c++, doesn't use windows sdk, non standard extensions. Anything platform specific is wrapped up in platform defines. As part of this work I want a cross platform build system and start to ditch all my Microsoft .sln files and .vcproj files so I have a unified way of building source code across all platforms. What would be incredibly useful if anyone knows of any tools/scripts that can convert my c++ .sln and vcproj files and create bjam make files, sorting out all the dependency issues for me. Any help would be greatly appreciated! Thanks
Advertisement
You can use jam to manage your builds: click. You may recognise jam as it is the tool that packages like boost use to manage build configurations for several platforms.

Alternatively you can maintain multiple project files, each in different top level directories:

Windows - Visual Studio Project
OSX - Xcode project
Linux - make file
The problem though I try to solve is a way to avoid the initial drudge work of setting up these make files that work across the different platforms be it jam, boost jam or even gnu make from the hundreds of vcproj files already in existence.

I started writing my own solution in a python script but it looks like a lot of work. So if anyone has any ideas on a better approach I would be eternally great full. :)
I made my own system for similar reasons. It may or may not be appropriate for your needs, but it sounds like it will fit the bill given your basic description.

The build description files ("slamfiles") are incredibly simple and I imagine that they could easily be generated by a script in the many cases.
Most likely you'll want to maintain your Project and Solution files for debugging purposes. VS has what is really one of the best debuggers around, Stepping through source code, Edit and Continue or heck, just being able to do the debug-fix-run cycle from one place is convenient -- and I'm not sure if, or to what degree, you would lose that going to a completely external system.

throw table_exception("(? ???)? ? ???");

Quote:Original post by the_edd
I made my own system for similar reasons. It may or may not be appropriate for your needs, but it sounds like it will fit the bill given your basic description.

The build description files ("slamfiles") are incredibly simple and I imagine that they could easily be generated by a script in the many cases.


Does it support well spaces in names ?
English is not my native language.Sam.
Quote:Original post by the_edd
I made my own system for similar reasons. It may or may not be appropriate for your needs, but it sounds like it will fit the bill given your basic description.

The build description files ("slamfiles") are incredibly simple and I imagine that they could easily be generated by a script in the many cases.


Thanks very much i'll have close look tomorrow morning, certainly looks interesting and worth a go.

Quote:Original post by Ravyne
Most likely you'll want to maintain your Project and Solution files for debugging purposes. VS has what is really one of the best debuggers around, Stepping through source code, Edit and Continue or heck, just being able to do the debug-fix-run cycle from one place is convenient -- and I'm not sure if, or to what degree, you would lose that going to a completely external system.


Its just the build system I would be changing, I still use the Microsoft compiler and visual studio editor and debugger on windows.
Quote:Original post by rolkA
Quote:Original post by the_edd
I made my own system for similar reasons.


Does it support well spaces in names ?


Yes.

Quote:Original post by Ravyne
Most likely you'll want to maintain your Project and Solution files for debugging purposes. VS has what is really one of the best debuggers around, Stepping through source code, Edit and Continue or heck, just being able to do the debug-fix-run cycle from one place is convenient -- and I'm not sure if, or to what degree, you would lose that going to a completely external system.


The MSVC compiler generates a .pdb file containing all the symbolic information needed for debugging. This is true regardless of whether you run the compiler from within the IDE or externally.

Another alternative to Jam is SCons, again a multi-platform build system. One of its more interesting features it the ability to generate MSVC project files which depending on your choice of IDEs might prove useful.

link: Scons Website

Cheers,

Tom
Alternately, you could use a cross-platform IDE that has portable project files. I believe Code::Blocks fits the bill.

This topic is closed to new replies.

Advertisement