Cross Builder, v1.0

Dear boosters, I thought this might be of interested in this, even if it's Windows-only for now. I'm happy to announce the first version of "Cross Builder": http://www.torjo.com/cb/ In short, Cross Builder allows you to build C++ projects very easy. In addition to that, it allows you to modify various compiler settings in a simple and straightforward way. Cross Builder's purpose is to make it as easy as possible for you to build your projects with *any* C++ compiler. Or, put in other words, *one click*. Compiler settings apply hierarchically. This is a very powerful mechanism, and once you see it at work, you'll simply love it! When you modify a setting, you modify it for: * a HDD directory or file * a configuration (such as "Debug", "Release", etc.) * a compiler (such as "All compilers", "MSVC" (all MS compilers), "VC 7.1", etc) From then on, this setting will apply to all: * it sub-configurations * its sub-compilers * its HDD sub-directories ...until it's overridden. Screenshots and possibility to download: http://www.torjo.com/cb/ As a side-node, in the near future, I will also post the source-code for the first version of CB. Feedback is welcome. Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

John Torjo wrote:
Dear boosters,
Hi John.
I thought this might be of interested in this, even if it's Windows-only for now.
Have you seen my "thoughts on a GUI library" thread? It is still early days so I would appreciate any feedback. I am continuing to work on i and now support code like: gui::area client; ::GetClientRect( *this, client.native()); // ... to allow interoperability between areas, positions, sizes and their natiive OS representations.
I'm happy to announce the first version of "Cross Builder": http://www.torjo.com/cb/
In short, Cross Builder allows you to build C++ projects very easy. In addition to that, it allows you to modify various compiler settings in a simple and straightforward way.
Cross Builder's purpose is to make it as easy as possible for you to build your projects with *any* C++ compiler.
Does this work for Boost.Build (v2) projects? I would like an IDE that allows you to manage a project written using Boost.Build2 that allows you to configure user-config.jam and the location of the Boost distribution. I have written a utility program based on process_jam_log.cpp to output XML instead of HTML so it can be rendered using a stylesheet or manipulated. I would like to hook this into an IDE that is Boost-aware/orientated. Regards, Reece

Have you seen my "thoughts on a GUI library" thread? It is still early days so I would appreciate any feedback. I am continuing to work on i and now support code like:
gui::area client; ::GetClientRect( *this, client.native()); // ...
to allow interoperability between areas, positions, sizes and their natiive OS representations.
I will take a look at it soon.
Does this work for Boost.Build (v2) projects? I would like an IDE that
Nope, it does not work with Boost.Build, because its Cross Builder's grammar and concepts are quite different. For instance, you can have per-directory/file settings, which I don't think it's possible for Boost.build. I guess, if there's interest, I could make it possible to output some sort of .jam file. Cross Builder's purpose is to - be able to configure compiler settings as easy as possible (whereever you wish, in the directory hierarchy) - be very flexible - make it very easy to build projects, with whatever compilers you wish
allows you to manage a project written using Boost.Build2 that allows you to configure user-config.jam and the location of the Boost distribution.
I have written a utility program based on process_jam_log.cpp to output XML instead of HTML so it can be rendered using a stylesheet or manipulated. I would like to hook this into an IDE that is Boost-aware/orientated.
If you can think of this as a compiler (that is, you have source files, which you compile into object files, which then you link together), then I guess it could be hooked into Cross Builder. Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

John Torjo wrote:
Does this work for Boost.Build (v2) projects? I would like an IDE that
Nope, it does not work with Boost.Build, because its Cross Builder's grammar and concepts are quite different.
For instance, you can have per-directory/file settings, which I don't think it's possible for Boost.build.
What do you mean?! Per-project "requirements" were a feature of V2 from the very start: http://boost.org/boost-build2/doc/html/bbv2/tutorial/properties.html#bbv2.tu... Per-file requirements are also possible: http://boost.org/boost-build2/doc/html/bbv2/faq/s07.html - Volodya

Vladimir Prus wrote:
John Torjo wrote:
Does this work for Boost.Build (v2) projects? I would like an IDE that
Nope, it does not work with Boost.Build, because its Cross Builder's grammar and concepts are quite different.
For instance, you can have per-directory/file settings, which I don't think it's possible for Boost.build.
What do you mean?!
Sorry for being unclear. What I mean is : in your case (to my understanding), you specify properties in a jamfile. But, a jamfile automatically specifies a project. Which means that in order to specify some properties, you need to automatically create a project. For Cross Builder, this is not so. You can specify per-directory settings, even if that directory is *not part of any project*. The will simply propagate to their subdirectories/files. Also, in Cross Builder, there is no project root. Every directory simply inherits all settings from its parent directories. Simply imagine this hierarchy: lib - examples [1] - dialogs - example1 [2] - example2 [3] - ... - controls - control_example1 [4] - control_example2 [5] - ... - ... - win32gui - sources - ... [1] here, I set the fact that all examples depend on win32gui. This automatically applies to subdirectories. Also, I set the fact that all examples are GUIs (user interface), and various other things. [2],[3],[4],[5] - I mark these as projects. They inherit the fact the attributes set at [1]. Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

John Torjo wrote:
Vladimir Prus wrote:
John Torjo wrote:
Does this work for Boost.Build (v2) projects? I would like an IDE that
Nope, it does not work with Boost.Build, because its Cross Builder's grammar and concepts are quite different.
For instance, you can have per-directory/file settings, which I don't think it's possible for Boost.build.
What do you mean?!
Sorry for being unclear.
What I mean is : in your case (to my understanding), you specify properties in a jamfile.
But, a jamfile automatically specifies a project.
I don't understand you still. What's "automatically" and what's "specifies a project".
Which means that in order to specify some properties, you need to automatically create a project.
I'm completely lost. "need to automatically create" makes no sense. I either need to do something or something is done automatically.
For Cross Builder, this is not so. You can specify per-directory settings, even if that directory is *not part of any project*.
Could you clarify what's "part of any project". It seems to be that the only difference in Cross Builder is that I don't need to place a file to directory.
The will simply propagate to their subdirectories/files.
Also, in Cross Builder, there is no project root. Every directory simply inherits all settings from its parent directories.
The same in Boost.Build. You just can mark a project root which does not inherit settings. - Volodya

But, a jamfile automatically specifies a project.
I don't understand you still. What's "automatically" and what's "specifies a project".
http://boost.org/boost-build2/doc/html/bbv2/advanced/jamfiles.html "As mentioned before, targets are grouped into projects, and each Jamfile is a separate project." Anyway, perhaps we use different meanings for the term "project". For me, it means a set of C++ files, which get built into .obj files, and then linked together.
For Cross Builder, this is not so. You can specify per-directory settings, even if that directory is *not part of any project*.
Could you clarify what's "part of any project". It seems to be that the only
see above.
difference in Cross Builder is that I don't need to place a file to directory.
In Cross Builder, settings are completely hierarchical. See: http://www.torjo.com/cb/#what_is
The same in Boost.Build. You just can mark a project root which does not inherit settings.
Yes but, if you don't mark any, will a directory inherit the settings from its parents? I still don't know for sure how you would accomplish, using Boost.Build, the example I've shown you in the previous email: lib - examples [1] - dialogs - example1 [2] - example2 [3] - ... - controls - control_example1 [4] - control_example2 [5] - ... - ... - win32gui - sources - ... Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

John Torjo wrote:
The same in Boost.Build. You just can mark a project root which does not inherit settings.
Yes but, if you don't mark any, will a directory inherit the settings from its parents?
There are no "settings" for directories that don't contain a Jamfile. That said, however, it would be trivial to modify Boost.Build to allow it. But is it an important use case? If it were, we'd surely have received a request for it by now (?) -- Dave Abrahams Boost Consulting http://www.boost-consulting.com

David Abrahams wrote:
There are no "settings" for directories that don't contain a Jamfile. That said, however, it would be trivial to modify Boost.Build to allow it. But is it an important use case? If it were, we'd surely have received a request for it by now (?)
I've answered in the Boost.Build mailing list. Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

David B. Held wrote:
John Torjo wrote:
[...] Feedback is welcome.
Just out of curiosity, how do you think your project compares to Borland's C++BuilderX?
Hmmm. I haven't used it, but after reading on the net about it, I would say Cross Builder is better :) Anyway, I'll let you decide for yourself. C++BuilderX seems to work also project-wise (that is, you create a project, add files to it; and the settings apply to the files only for that project). What is a project? For Cross Builder, any directory can become a project, with just a single click. Compiler settings are hierarchical - you can set settings in *any* directory, and it simply propagates down the hierarchy. I would say that's quite flexible: http://www.torjo.com/cb/ Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

John Torjo wrote:
Dear boosters,
I thought this might be of interested in this, even if it's Windows-only for now.
I'm happy to announce the first version of "Cross Builder": http://www.torjo.com/cb/
Looks interesting. How does it compare with other such cross platform / meta make utilities such as CMake? I'd like to have on your website a very small paragraph with requirements and supported environments. I found it difficult to see what compilers are supported out of the box (I don't want to create my own compiler settings). It'd be nice if there was a summary of sorts. Nice piece of work! Hajo

Hajo Kirchhoff wrote:
John Torjo wrote:
Dear boosters,
I thought this might be of interested in this, even if it's Windows-only for now.
I'm happy to announce the first version of "Cross Builder": http://www.torjo.com/cb/
Looks interesting. How does it compare with other such cross platform / meta make utilities such as CMake?
I guess I leave this comparison up to you. Just try using it...
I'd like to have on your website a very small paragraph with requirements and supported environments. I found it difficult to see what compilers are supported out of the box (I don't want to create my own compiler settings). It'd be nice if there was a summary of sorts.
Yup, sorry for this. I will update shortly. Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

John Torjo wrote:
Looks interesting. How does it compare with other such cross platform / meta make utilities such as CMake?
I guess I leave this comparison up to you. Just try using it...
Have you tried other meta make utilities such as CMake before creating your tool or are you leaving this up to me because you haven't had the chance to try CMake yet? I am trying to decide on a build tool for the Lit Window Library and am considering bjam, cmake, bakefile and would just like to get an opinion about your tool before delving deeper into it. BTW, I need linux support as well as VC6++ and .NET project creation, meaning the tool should create .NET project/solution files rather than acting as a build tool. As far as I understand bjam, it does not (yet?) create .NET projects but compiles the sources directly. Am I wrong? When do you expect to have linux support? Hajo

Hajo Kirchhoff wrote:
John Torjo wrote:
Looks interesting. How does it compare with other such cross platform / meta make utilities such as CMake?
I guess I leave this comparison up to you. Just try using it...
Have you tried other meta make utilities such as CMake before creating your tool or are you leaving this up to me because you haven't had the chance to try CMake yet?
First of all, I simply don't like make tools - where you need to modify scripts by hand. What I wanted was simply a RAD tool, to make it extremely easy to build projects, and modify compiler settings. That's what I've hopefully provided. As for cmake, I took a look at it once, but I just don't like it (see above). And I haven't heard of bakefile before. I've taken a look at it, and from all the make programs, this is the clear winner. So if you want to use a make-like tool, by reading its docs, I'd certainly recommend it.
I am trying to decide on a build tool for the Lit Window Library and am considering bjam, cmake, bakefile and would just like to get an opinion about your tool before delving deeper into it. BTW, I need linux support
First of all, if you specifically want a make-clone, then Cross Builder is not for you. For starters, using Cross Builder, you manipulate settings from within the GUI - you never manipulate any script file manually.
as well as VC6++ and .NET project creation, meaning the tool should create .NET project/solution files rather than acting as a build tool.
For .net project creation, I do plan to offer such a feature, but in the distant future.
As far as I understand bjam, it does not (yet?) create .NET projects but compiles the sources directly. Am I wrong?
When do you expect to have linux support?
I hope within 6-12 months. Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!

On Wed, 15 Dec 2004 21:33:53 +0200, John Torjo wrote
For .net project creation, I do plan to offer such a feature, but in the distant future.
People that are interested in a tool that generates native cross-platform makefiles (eg: Gnu Makefiles, VC7 solutions, etc) should have a look at Make Project Creator http://www.ociweb.com/product/mpc/ It's open source (similar to boost license), uses perl to generate 'makefiles', supports complex targets (like IDL->cpp), doesn't have the flashy GUI, but it works well. I've used it on a cross-platform project and was quite happy with it. Jeff

On Tue, 14 Dec 2004 22:49:07 +0200, John Torjo <john.lists@torjo.com> wrote:
Dear boosters,
I thought this might be of interested in this, even if it's Windows-only for now.
I'm happy to announce the first version of "Cross Builder": http://www.torjo.com/cb/
In short, Cross Builder allows you to build C++ projects very easy. In addition to that, it allows you to modify various compiler settings in a simple and straightforward way.
Cross Builder's purpose is to make it as easy as possible for you to build your projects with *any* C++ compiler.
Or, put in other words, *one click*.
Compiler settings apply hierarchically. This is a very powerful mechanism, and once you see it at work, you'll simply love it!
When you modify a setting, you modify it for:
* a HDD directory or file * a configuration (such as "Debug", "Release", etc.) * a compiler (such as "All compilers", "MSVC" (all MS compilers), "VC 7.1", etc)
From then on, this setting will apply to all: * it sub-configurations * its sub-compilers * its HDD sub-directories ...until it's overridden.
Screenshots and possibility to download: http://www.torjo.com/cb/
As a side-node, in the near future, I will also post the source-code for the first version of CB.
Feedback is welcome.
I have been looking for something like this for a long time, and this looks promising. I would (of course) like to see support for more compilers, especially Digital Mars,Borland and Watcom, as these are freely available :) I would also love to see a "project conversion" tool. E.g. Read in a visual studio project, extract the files and settings, and compile with any compiler. Peder
Best, John
-- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run! _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Feedback is welcome.
I have been looking for something like this for a long time, and this looks promising.
Thanks.
I would (of course) like to see support for more compilers, especially Digital Mars,Borland and Watcom, as these are freely available :)
Certainly! Also, I welcome any help. If you'd like to help with specifying compiler metadata files, please let me know (eventually in a private email) I plan to support every compiler out there. All it needs are two files (settings.txt and rules.txt :))
I would also love to see a "project conversion" tool. E.g. Read in a visual studio project, extract the files and settings, and compile with any compiler.
Yup, but that would require soooo much work :) I do plan something like this, but in the pretty far future. There are just so many other things to do until then :) Best, John -- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- http://www.torjo.com/cb/ - Click, Build, Run!
participants (8)
-
David Abrahams
-
David B. Held
-
Hajo Kirchhoff
-
Jeff Garland
-
John Torjo
-
Peder Holt
-
Reece Dunn
-
Vladimir Prus