C++ IDE with graphical application building and good portability

L

Lars Uffmann

Does anyone have a good suggestion?

I am currently using Eclipse Europa with the C-Development Toolkit (plus
gnu-toolchain under cygwin) and the Widestudio Native Application
Builder plugin.

While I am surprised I actually got this configured and running, it has
some things that I do not like too much - especially a couple of bugs
(build tools vanishing from the builder settings upon switching between
projects, for example). And then the NAB plugin has some nasty
limitations, plus I seem to be unable to include my own "tool" libaries
when using the NAB/MWT Builder.

So I was wondring what other people use - I mean - there's a bazillion
of GUI applications out there, you can't tell me that everyone builds
their windows by typing in the code... :)

I would like to avoid Visual Studio (have been suggested that in the
past), and preferably use something that includes the gnu compiler (for
license reasons and for being - afaik - the best c-compiler around).

I do not mind a bit of configuration work (getting eclipse & plugins to
run properly took me days the first time), but the end result should
produce binaries can simply be copied to another computer and will run
on any computer that uses the same operating system and meets the
hardware/driver requirements for the programs. Copying of dlls along
with the executable is acceptable, of course :)
Having to install a framework (.NET comes to mind) is absolutely not
acceptable :)

Thank you for any inputs - also good commercial platforms!

Lars
 
E

Erik Wikström

Does anyone have a good suggestion?

I am currently using Eclipse Europa with the C-Development Toolkit (plus
gnu-toolchain under cygwin) and the Widestudio Native Application
Builder plugin.

While I am surprised I actually got this configured and running, it has
some things that I do not like too much - especially a couple of bugs
(build tools vanishing from the builder settings upon switching between
projects, for example). And then the NAB plugin has some nasty
limitations, plus I seem to be unable to include my own "tool" libaries
when using the NAB/MWT Builder.

So I was wondring what other people use - I mean - there's a bazillion
of GUI applications out there, you can't tell me that everyone builds
their windows by typing in the code... :)

There are only a few widely used GUI frameworks out there, and either
you simply type all the code or they come with some kind of builder (or
you use a builder developed by someone else for your framework).
I would like to avoid Visual Studio (have been suggested that in the
past), and preferably use something that includes the gnu compiler (for
license reasons and for being - afaik - the best c-compiler around).

Personally I think that VS is the best GUI available for Windows, and if
you do not want to use MFC you can use Qt, it should integrate quite
nicely into the IDE.

As far as compilers are concerned the VS compiler is more or less as
good as gcc, but not of them are the best. By the way, what are those
licence concerns you are having?
I do not mind a bit of configuration work (getting eclipse & plugins to
run properly took me days the first time), but the end result should
produce binaries can simply be copied to another computer and will run
on any computer that uses the same operating system and meets the
hardware/driver requirements for the programs. Copying of dlls along
with the executable is acceptable, of course :)

Compile with static linkage.
 
L

Lars Uffmann

Erik said:
There are only a few widely used GUI frameworks out there, and either
you simply type all the code or they come with some kind of builder (or
you use a builder developed by someone else for your framework).

Hmm - I'm surprised that typing the code is actually still being done -
considering that very good integrated building environments were already
around over 10 years ago... Thinking of Borland Delphi & C++ Builder,
Visual Basic, VBA (MS Access). And considering that it sorta wastes a
lot of expensive programmer workhours if the design needs to be done by
foot...
Personally I think that VS is the best GUI available for Windows, and if
you do not want to use MFC you can use Qt, it should integrate quite
nicely into the IDE.

Hmm - I've downloaded Qt and while it is fancy looking, it instantly got
earned my disapproval for two reasons:
- I didn't have a clue how to integrate it into any program, even
after 5 minutes of looking at it (short attention span, because
self-explaining software allows you to make a first progress within a
minute or two, usually) - I can live with that if it's worth taking a
deeper look
- the whole Qt installed in german without ever asking me, while I
downloaded what I thought to be an international (or at least english)
version - despite me running an english XP - apparently by locating my
ip upon download from the webserver, and linking me to a german
installation. In my eyes, everyone who *silently* uses the users IP
address to link him to a localized version of a webpage / software
apparently shows a total lack of common sense, to put it gently. Thus, I
have a strong aversion against installing software when I have to go out
of my way to get my hands on the english setup files.

Anyways - due to your reply, I'll give Qt a second chance, once I manage
to get the english setup files ;)

As far as compilers are concerned the VS compiler is more or less as
good as gcc, but not of them are the best.

Actually, I had enough of Visual C++ back in '97 or '98, when I first
saw it on my roommates comp, and it detected a syntax error in the
source but nevertheless finished compiling and linking to an executable,
that then - of course - would crash with an exception upon getting to
the module with the error. I felt like back in the old interpreter
days... I won't using Visual Studio to develop any serious software. Not
Ever.
> By the way, what are those licence concerns you are having?
It's NOT open source, and Microsoft has the copyrights, and I do not
trust that no-good-company further than I can throw a bookshelf
containing hardcopies of the full msdn knowledge base. What is keeping
them from making the next version of Visual Studio non-free? Nothing.
Actually - what's keeping them from discontinuing the development and
starting a brand new project instead? Righto - Nothing!

A company that's been shoving their software up users behinds ever since
the success of Win95. I am speaking banana-products: maturing at the
customer.

Then of course: .NET - need I say more? I don't want to have to force a
user to install 20 megabytes of .NET framework that will be just
annoying, waste diskspace, mess up the registry and add a lot of
security risks / annoying windows update messages for the future - all
this just to execute a tiny little application


Compile with static linkage.
Thank you! That was helpful :)

Have a nice weekend!

Lars
 
T

Tomás Ó hÉilidhe

Lars Uffmann said:
C++ IDE with graphical application building and good portability


I only started cross-platfrom programming in the last week, but I'll give
you my opinion.

First of all, an IDE for programming in C++. I wholeheartedly recommend
"Dev-C++" by Bloodshed. You can get it for Windows and for Linux, (and
probably for other OS's too). It uses gcc and g++ by default. I've been
using it for years, even before I dabbled in cross-platform.

For a cross-platform library for GUI, I recommend wxWidgets. I only
started using it literally less than a week ago but it's incredibly
simple and intuitive to use. You make a remarkable amount of progress in
just an hour or two.

If you want an IDE for doing cross-platform C++ programming for GUI
applications, then I have to recommend the excellent, the brilliant,
"wxDev-C++". It's basically Dev-C++ that has been tailored for GUI
development. It has a graphical dialog designer and all. You design the
dialog, hit save, and then miraculously the class's code has changed to
implement the dialog you designed.

You only need to download wxDev-C++; everything else you need comes
bundled with it. Here's the Windows binary:

http://kent.dl.sourceforge.net/sourceforge/wxdsgn/wxdevcpp_6.10.2
_setup.exe
 
E

Erik Wikström

Hmm - I'm surprised that typing the code is actually still being done -
considering that very good integrated building environments were already
around over 10 years ago... Thinking of Borland Delphi & C++ Builder,
Visual Basic, VBA (MS Access). And considering that it sorta wastes a
lot of expensive programmer workhours if the design needs to be done by
foot...

Of course, most sane people use a builder when possible, but it is not
uncommon to generate controls etc. based on data and user input in which
case you must code since the tools can only be used for static designs.
Hmm - I've downloaded Qt and while it is fancy looking, it instantly got
earned my disapproval for two reasons:
- I didn't have a clue how to integrate it into any program, even
after 5 minutes of looking at it (short attention span, because
self-explaining software allows you to make a first progress within a
minute or two, usually) - I can live with that if it's worth taking a
deeper look

Read the tutorials on their site and you should get an idea.
Actually, I had enough of Visual C++ back in '97 or '98, when I first
saw it on my roommates comp, and it detected a syntax error in the
source but nevertheless finished compiling and linking to an executable,
that then - of course - would crash with an exception upon getting to
the module with the error. I felt like back in the old interpreter
days... I won't using Visual Studio to develop any serious software. Not
Ever.

Well, VC++6 is well-known as a not very good C++ compiler, but that was
10 years ago.
It's NOT open source, and Microsoft has the copyrights, and I do not
trust that no-good-company further than I can throw a bookshelf
containing hardcopies of the full msdn knowledge base. What is keeping
them from making the next version of Visual Studio non-free? Nothing.

Of course not, but considering that the current version is non-free too
that can hardly make things worse.
Actually - what's keeping them from discontinuing the development and
starting a brand new project instead? Righto - Nothing!

Money, they get paid by companies who buy their products. The employees
at those companies have become used to VS works and to make any radical
changes without backwards compatibility would be a big mistake.

Anyway, if you are using standard C++ and Qt (or some other non-MS GUI
framework) you can just take you code and use the next compiler if that
should happen, by then perhaps a decent IDE alternative is around.
Have a nice weekend!

The same!
 
O

Ole Nielsby

Lars Uffmann said:
I would like to avoid Visual Studio (have been suggested that in the
past), and preferably use something that includes the gnu compiler (for
license reasons and for being - afaik - the best c-compiler around).

I use VC Express/wxWidget and doublecheck my code with
GCC occasionally. That way, I get the ease of VS debugging,
and code that works with both compilers.
 
E

EricF

I use VC Express/wxWidget and doublecheck my code with
GCC occasionally. That way, I get the ease of VS debugging,
and code that works with both compilers.
VC Express is Visual Studio, though what you say makes sense. I've used it and
Eclipse (on Windows), which uses gcc/g++ via cygwin. (It can be configured to
use ming).

Eclipse gives you some portability.

I've been doing Java development for 10 years and recently returned to C++. I
develop applications in C++ for AIX in my new job. I'm underwhelmed with VC
Express/VS and Eclipse. Both are adequate IDES. VCE/VS are primarily for doing
Windows development. They probably are good at that, but I'm not qualified to
comment. But getting a console project setup is not intuitive. I find that
most things work fine, but then I run into a usability issue.

Eclipse with the C/C++ tools seems a bit buggy. Note that I have MyEclipse, a
commercial product built on Eclipse with a lot of Java plug-ins. After getting
it configured to work with Cygwin/g++, it worked fine for a month, then
started throwing exceptions at startup. They were benign at first, but after a
few weeks of that, the outline view quit working.

My 2 cents: If you have a small application without a lot of classes, you
don't want these guis. You probably don't need a gui. A decent text editor and
command line builds are better.

If you have a large application and lots of classes, a gui is useful. Expect
some headaches. You may be better off with the gui as a text editor and
building/debugging with the command line tools.

Eric
 
J

James Kanze

"Ole Nielsby" <[email protected]>
wrote:>Lars Uffmann <[email protected]> wrote:

[...]
My 2 cents: If you have a small application without a lot of
classes, you don't want these guis. You probably don't need a
gui. A decent text editor and command line builds are better.
If you have a large application and lots of classes, a gui is
useful. Expect some headaches. You may be better off with the
gui as a text editor and building/debugging with the command
line tools.

For editing code (or text documentation), a classical editor is
probably the ideal tool. For building, you need a command line
interface anyway---you'll want to trigger your complete rebuilds
at a time when no one is using the system. For anything but the
smallest project, however, you'll really want some graphical
documentation---things like class diagrams, etc. And that
supposed some sort of graphic tool.
 
E

Erik Wikström

VC Express is Visual Studio, though what you say makes sense. I've used it and
Eclipse (on Windows), which uses gcc/g++ via cygwin. (It can be configured to
use ming).

Eclipse gives you some portability.

I've been doing Java development for 10 years and recently returned to C++. I
develop applications in C++ for AIX in my new job. I'm underwhelmed with VC
Express/VS and Eclipse. Both are adequate IDES. VCE/VS are primarily for doing
Windows development. They probably are good at that, but I'm not qualified to
comment. But getting a console project setup is not intuitive. I find that
most things work fine, but then I run into a usability issue.

I usually create an empty console application and that works fine. Of
course there are a number of compiler settings that have to be changed
but you run into that with any compiler that I know of.
My 2 cents: If you have a small application without a lot of classes, you
don't want these guis. You probably don't need a gui. A decent text editor and
command line builds are better.

Yes, the extra overhead of having to set up a project and whatnot can be
a bit much for small apps.
 
P

Przemyslaw Koprowski

Does anyone have a good suggestion?
My favorite is Code::Blocks (http://www.codeblocks.org/).
It still has some hard edges, but is already very usable
and actively developed.

Before I used: Borland C++ (for DOS), VS, Dev-C++,
MinGW Developer Studio and Borland C++ Builder (don't
remember vesrion numbers). In comparison, *IMHO* only
VS is in the same league (in fact slightly more
feature-rich) as C::B, but C::B is
a) open-source and free
b) cross-platform.

Przemek
 
E

EricF

I usually create an empty console application and that works fine. Of
course there are a number of compiler settings that have to be changed
but you run into that with any compiler that I know of.

Yes, the empty console app is the key. I made the mistake of letting the
wizard set up the console project, naively assuming a wizard would set it up
right. After doing that, it was impossible to compile without including some
ms specific header. :-(

Eric
 
C

cnboy

bu dong!
EricF said:
Yes, the empty console app is the key. I made the mistake of letting the
wizard set up the console project, naively assuming a wizard would set it
up
right. After doing that, it was impossible to compile without including
some
ms specific header. :-(

Eric
 
L

Linonut

* James Kanze peremptorily fired off this memo:
For editing code (or text documentation), a classical editor is
probably the ideal tool. For building, you need a command line
interface anyway---you'll want to trigger your complete rebuilds
at a time when no one is using the system. For anything but the
smallest project, however, you'll really want some graphical
documentation---things like class diagrams, etc. And that
supposed some sort of graphic tool.

Or doxygen plus graphviz.
 
R

Riyad

VC Express is Visual Studio, though what you say makes sense. I've used it and
Eclipse (on Windows), which uses gcc/g++ via cygwin. (It can be configured to
use ming).

Eclipse gives you some portability.

I've been doing Java development for 10 years and recently returned to C++. I
develop applications in C++ for AIX in my new job. I'm underwhelmed with VC
Express/VS and Eclipse. Both are adequate IDES. VCE/VS are primarily for doing
Windows development. They probably are good at that, but I'm not qualified to
comment. But getting a console project setup is not intuitive. I find that
most things work fine, but then I run into a usability issue.

Eclipse with the C/C++ tools seems a bit buggy. Note that I haveMyEclipse, a
commercial product built on Eclipse with a lot of Java plug-ins. After getting
it configured to work with Cygwin/g++, it worked fine for a month, then
started throwing exceptions at startup. They were benign at first, but after a
few weeks of that, the outline view quit working.

My 2 cents: If you have a small application without a lot of classes, you
don't want these guis. You probably don't need a gui. A decent text editor and
command line builds are better.

If you have a large application and lots of classes, a gui is useful. Expect
some headaches. You may be better off with the gui as a text editor and
building/debugging with the command line tools.

Eric


Eric & Others,
For you guys that are doing large Eclipse-based installs you might
consider using Pulse (http://www.poweredbypulse.com/) to manage these
installs. As you found out trying to keep all the cross-dependencies
in line with each other and all the products functioning correctly,
with so much overlap is *is* unfortunately still possible to run into
"DLL-hell".

Pulse is a free provisioning technology from Genuitec, LLC (folks that
make MyEclipse) that allows you to configure "profiles". A profile is
just a platform (Eclipse Java, Eclipse C/C++, MyEclipse, etc.) that
you can then Drag and Drop more software onto using the GUI
(Subversion support, Swing GUI builder, Report Designer, etc.) and
simply "Run" that profile (you can have any number of profiles you
want). Pulse then goes and grabs all the plugins for you that are
required to make that profile work. It also manages dependencies,
updates and all the compatibility nightmares you can run into when you
try and juggle this stuff manually. Because of this, the days of
needing to do new installs of Eclipse + all your favorite plugins is
hopefully no more.

Let me know if you have any questions about it, I *do* work for
Genuitec, LLC but that doesn't stop me from hoping that the service
can help simplify your installations for you.

Best,
Riyad
 
L

Linonut

* James Kanze peremptorily fired off this memo:
Which is doing it backwards. You need the class diagrams in
order to define the classes and write the header files.

Nah. Look at this way: would you rather edit a class's attribute and
operation signatures inside a relatively clumsy dia, Visio, umbrello,
argouml, or bouml dialog box, or using your favorite programmer's
editor?

Obviously, at some point you want to generate class diagrams, and maybe
even use them for a purpose other than satisfying your boss's
directives, such as clarifying your own understanding of your code.

I was amused to see a product (don't recall the name) that made a big
deal out of doing UML using an "easy-to-edit" text-based format. This
format was essentially a strict version of a header file.

The point of class diagrams is not to save typing time -- they don't
save any, in fact they can double it if you're not careful. The point
of class diagrams is not to create the code -- they're not always
tractable in that way.

The point of class diagrams is to provide various views of your
prospective code. Or, even better, other people's code. At least in my
view.

As for doxygen and graphviz, they do indeed come later, after you've
satisfied yourself enough to start commenting the code, which should
come pretty early in my book.

Don't feel bad if you disagree. I go round and round at work about UML.
At least now we've /finally/ dumped the use of Microsoft Word for
documenting the design. It was awful writing each function signature
in Visio, Word, and, finally, the code. (Even dia makes it easier to
edit a class than does Visio, at least Visio 2000 anyway.)

Ah, nice sig monster!
 
J

James Kanze

* James Kanze peremptorily fired off this memo:
Nah. Look at this way: would you rather edit a class's
attribute and operation signatures inside a relatively clumsy
dia, Visio, umbrello, argouml, or bouml dialog box, or using
your favorite programmer's editor?

You've hit on a sore point with me. There are good tools for
editing text---gvim is hard to beat---and there are good tools
for editing class diagrams (I like Rose). But they don't
integrate. You can't generate diagrams in vim, and as you say,
editing the parameter lists, etc., is a bit long winded in Rose.
(Actually, the parameter lists are nothing compared to the pre-
and post-conditions, and all the rest.)

What I'd like is a graphics tool which pops you into your
favorite editor when you get down to the functional level.
Obviously, at some point you want to generate class diagrams,
and maybe even use them for a purpose other than satisfying
your boss's directives, such as clarifying your own
understanding of your code.

Normally, that point is *before* you write the first line of
code. Typically, before you even decide on the name of the
class.
I was amused to see a product (don't recall the name) that
made a big deal out of doing UML using an "easy-to-edit"
text-based format. This format was essentially a strict
version of a header file.
The point of class diagrams is not to save typing time -- they
don't save any, in fact they can double it if you're not
careful. The point of class diagrams is not to create the
code -- they're not always tractable in that way.

I've used Rose to generate code in some projects. I find that
I'm a lot more productive using it that writing my headers by
hand.
The point of class diagrams is to provide various views of
your prospective code. Or, even better, other people's code.
At least in my view.

The point of class diagrams (and requirements specifications,
and a lot of other documentation) is to define what you are
going to write in the code. I'm very sceptical of people who
code first, and write the documentation later. I've seen a lot
of code developed that way, and it's always pretty bad.
As for doxygen and graphviz, they do indeed come later, after
you've satisfied yourself enough to start commenting the code,
which should come pretty early in my book.
Don't feel bad if you disagree. I go round and round at work
about UML. At least now we've /finally/ dumped the use of
Microsoft Word for documenting the design. It was awful
writing each function signature in Visio, Word, and, finally,
the code. (Even dia makes it easier to edit a class than does
Visio, at least Visio 2000 anyway.)

Obviously, you need a specialized tool. Because I've usually
started with class diagrams, I've not been able to experiment
with CWeb, but I think some combination of CWeb, embedded in
Rose, would be just about perfect.

(FWIW: at one place I worked, header files were marked as
"derived" in Clearcase, and couldn't be edited at all. They
were generated by Rose from its petal files. And if Rose had
more capabilities for handling the textual parts of the
documentation, I think that this would be the ideal solution.)
 
L

Lars Uffmann

Tom said:
You only need to download wxDev-C++; everything else you need comes
bundled with it. Here's the Windows binary:

Hey Tomás, and everyone else that made suggestions :)

Thanks for all the inputs, and a fruitful debate - I had 2 days off from
work, so sorry for the late reply. I definitely will have a look into
those suggestions you made, wxWidgets, wxDev-C++, Code::Blocks, libSDL,
and I actually had Bloodshed-DevC++ installed before, but didn't manage
with it the way I was able to work with eclipse CDT. I might have
another look.

I'll let you know if I find any environment to be particularly suited
for my purpose (tool programming with GUI, socket-usage and xml parsing
as well as mdb-access - gotta be good for something that I have been a
silent reader on the mdb-tools mailing list for like 8 years now ;)

Best Regards,

Lars
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top