Sign in to follow this  
AniMerrill

Best Multiplatform IDE?

Recommended Posts

AniMerrill    227

This is probably a repost, so sorry about that.

 

Right now I'm trying to find the best multiplatform solution and I keep getting a bunch of mixed answers from Google searches. I've decided to download and develop on Ubuntu so I can test the multiplatform capability between the Ubuntu half of my computer and the Windows half, that way I'll pretty much know that my game runs on at least two different OS. So I've narrowed it down to a couple Linux IDEs:

 

*Code::Blocks, which I've tried before but didn't really like... not sure how good it really is

*Eclipse (at least the C++ specific version), but I hear it can become pretty slow since its Java based (same for NetBeans)

*Qt Creator, which I've heard a lot of good things about but it makes me nervous that its based around a specific SDK

 

I just wanna make sure from the get go that my IDE won't leave me hanging somewhere later close to release. I narrowed it down to these three because they all had relatively good things said about them and each seems pretty close to having a working version of Clang ready for them which seems invaluable for the debugging process. Is there something I'm missing, or should I just suck it up and straight up use vim with the normal GCC compiler and just do everything by hand because I'm so paranoid XD

 

Thanks for your help.

Share this post


Link to post
Share on other sites
patrrr    1323

You don't really need a multiplatform IDE, you could just pick the CMake build system which can generate project files for Visual Studio, Makefiles and a bunch of other editors and build systems. Qt Creator can even read CMakes directly. And you can definitely use Qt Creator for non-Qt stuff.

 

PS: emacs rocks.

Edited by patrrr

Share this post


Link to post
Share on other sites
AniMerrill    227

You don't really need a multiplatform IDE, you could just pick the CMake build system which can generate project files for Visual Studio, Makefiles and a bunch of other editors and build systems. Qt Creator can even read CMakes directly. And you can definitely use Qt Creator for non-Qt stuff.

 

PS: emacs rocks.

 

Okay that's a little relieving, I might take at least a look at Qt Creator then. I've sort of made a vow to get away from Microsoft products, because I'd really like to get into and support the good open source tools out there because... realistically indie gaming would be very lost without them.

 

What's emacs like? I've heard it compared to vim (which I know little about), is it basically the same thing? Like just a text editor but... not?

Share this post


Link to post
Share on other sites
patrrr    1323

It's also a good idea to learn different ways of doing things just to get a broader perspective. Also, spreading your skills over a greater number of technologies makes sense as a security measure/future-proofing.

 

In that regard, I guess emacs is like vim. Without the hassle of modal editing, and better customization I guess. But it takes time to become fluent in emacs.

Share this post


Link to post
Share on other sites
Bregma    9202

What's emacs like? I've heard it compared to vim (which I know little about), is it basically the same thing? Like just a text editor but... not?

Emacs is an OS shell.  One of its features is a built-in text editor.  You can even get vim mode plugin for the editor, and there are extensions to, for example, run a web server within emacs to test out your server-side code on the fly.  It uses a LISP variant as its programming language.  Emacs runs everywhere.  You need to memorize a bazillion multi-key combaintions (control-meta-alt-butterfly) and function names to use emacs effectively.

 

Vim is a text editor with enough add-ins and extensions that it can be used as a OS shell.  It has a smaller footprint (memory and disk space) than emacs and its programming language is procedural.  Vim runs everywhere.  The vi interface is modal, you need to fully grok that and memorize a gazillion bizarre keystrokes to use vim effectively.

 

The difference between something like vim or emacs and an IDE is the IDE is more rigidly structured (which limits its functionality, a mixed blessing) and an IDE tends to use clicky-clicky pictures where vim and emacs use text (which you can often click on).  An IDE is generally easier to learn, but like many things that are 'easier' they will limit your full power and make it harder to do the last 10% of the stuff you find you need.

 

QtCreator is the slickest free multi-platform IDE I've seen in a long time.  It's fast and responsive, easy to install and learn, and works the same everywhere I've run it.  It even has a vim mode for its text editor.

 

It's a matter of personal choice.  If you truly want a free development environment that feels and works the same on POSIX (Mac OS X, GNU/Linux) and WSA (Microsoft Windows) you should either choose emacs/vim or QtCreator.

Share this post


Link to post
Share on other sites
nife87    520

*Code::Blocks, which I've tried before but didn't really like... not sure how good it really is

 

Just out of curiosity, what did you not like about it? Maybe you have encountered some of the more buggy builds.

 

I have used it for quite a few years for cross-platform development and, compared to the alternatives, I find it more flexible/low-level (you can customize about anything, including its build process) and "light-weight" (always responsive and you can trim any fat/plug-ins).

For beginners, there are IMHO better alternatives, such as QtCreator, which I find it too bloated (do not get upset - just my opinion).

Of course, you have to switch IDE (try out the others) from time to time anyways to form an updated opinion (which I do every few years).

 

BTW. If you have used CB nightly builds (and you almost have to if you want an updated version), especially those from 4-6 years ago, there are always bound to be some more-or-less buggy builds. If I encounter such buggy build, I just report the bug(s) and step one version down until the next build is released (and usually they have fixed the bug(s) by then).

Share this post


Link to post
Share on other sites
AniMerrill    227

QtCreator is the slickest free multi-platform IDE I've seen in a long time.  It's fast and responsive, easy to install and learn, and works the same everywhere I've run it.  It even has a vim mode for its text editor.

 

It's a matter of personal choice.  If you truly want a free development environment that feels and works the same on POSIX (Mac OS X, GNU/Linux) and WSA (Microsoft Windows) you should either choose emacs/vim or QtCreator.

 

Thank you for this post. I was actually starting to feel punked because I was reading the tutorial that comes with emacs and kinda... under appreciating it I think. I mean, I'm twenty something, so every computer I was old enough to remember using had Microsoft Notepad included so, to me, emacs just seems like a really... bad text editor. I guess instead of reading the basic text editor tutorials I should maybe look up specific stuff, like how to use it to make C++?

 

Either that or just use Qt Creator since I don't really see how it would hurt me, at least with the main production process which will definitely be the hardest part I imagine. As long as I can eventually port it to the main trinity of OS without much of a headache I think I'll be happy with that.

Share this post


Link to post
Share on other sites
Cornstalks    7030

Thank you for this post. I was actually starting to feel punked because I was reading the tutorial that comes with emacs and kinda... under appreciating it I think. I mean, I'm twenty something, so every computer I was old enough to remember using had Microsoft Notepad included so, to me, emacs just seems like a really... bad text editor. I guess instead of reading the basic text editor tutorials I should maybe look up specific stuff, like how to use it to make C++?

Can you play Tetris, Snake, etc. in Notepad? Nope, but you can in Emacs (for example, M-x tetris (that is, Escape, press x, then type tetris). Just a small sample of Emacs. If you watch someone who really knows Emacs, it's like watching someone do magic.
 

Either that or just use Qt Creator since I don't really see how it would hurt me, at least with the main production process which will definitely be the hardest part I imagine. As long as I can eventually port it to the main trinity of OS without much of a headache I think I'll be happy with that.

I'd personally suggest using Qt Creator. Emacs is cool and all, and I use it (in addition to Xcode and Visual Studio), but unless you really want to get into the Linux/GNU/Open source/Command line-type world, you probably won't get as much out of Emacs as you would a more visual/GUI-type IDE, like Qt Creator.

Share this post


Link to post
Share on other sites
AniMerrill    227

 

*Code::Blocks, which I've tried before but didn't really like... not sure how good it really is

 

Just out of curiosity, what did you not like about it? Maybe you have encountered some of the more buggy builds.

 

I have used it for quite a few years for cross-platform development and, compared to the alternatives, I find it more flexible/low-level (you can customize about anything, including its build process) and "light-weight" (always responsive and you can trim any fat/plug-ins).

For beginners, there are IMHO better alternatives, such as QtCreator, which I find it too bloated (do not get upset - just my opinion).

Of course, you have to switch IDE (try out the others) from time to time anyways to form an updated opinion (which I do every few years).

 

BTW. If you have used CB nightly builds (and you almost have to if you want an updated version), especially those from 4-6 years ago, there are always bound to be some more-or-less buggy builds. If I encounter such buggy build, I just report the bug(s) and step one version down until the next build is released (and usually they have fixed the bug(s) by then).

 

I can't really remember at this point, its been about half of a year since I used Code::Blocks. Generally it seemed like a cool idea, but I think its just because I was coming down from a long experience of using Microsoft Visual Studio which... pretty much holds your hand the entire time. Maybe I'll have to take a look at it again.

 

If you know of any tutorials or guides to how to use Code::Blocks effectively, I might take another look at it. I think generally it was just a lot of information overload.

Share this post


Link to post
Share on other sites
swiftcoder    18432

I'd like to offer a slightly different perspective: I've never been a fan of monolithic IDEs, whether obscenely visual or arcanely textual.

 

I pretty much exclusively develop with a tabbed text editor alongside a tabbed terminal window (interspersed by the occasional browser or file browser), all with a liberal dose of alt-tab'ing back and forth.

 

It does take a little while to develop such a freeform workflow, but the flexibility you gain is well worth it, in my book...

Share this post


Link to post
Share on other sites

I also like QtCreator. QtCreator doesn't tie you to the Qt api (but has built-in Qt wizards if you want to use them). However, it does sorta tie you to their own 'make' tool, called QMake (which produces make files for GCC's make). You can use something like CMake if you want to though, but I personally like the QMake .pro files.

 

QtCreator is a very good IDE. It only has syntax highlighting for C++ (and a few other Qt-related things like the QMake files), but afaik it lacks support for other languages.

Share this post


Link to post
Share on other sites
AniMerrill    227

I'd like to offer a slightly different perspective: I've never been a fan of monolithic IDEs, whether obscenely visual or arcanely textual.

 

I pretty much exclusively develop with a tabbed text editor alongside a tabbed terminal window (interspersed by the occasional browser or file browser), all with a liberal dose of alt-tab'ing back and forth.

 

It does take a little while to develop such a freeform workflow, but the flexibility you gain is well worth it, in my book...

 

I was definitely considering this. What exactly do you use specifically? I might take a look at doing it that way, might be a good learning experience at the very least.

 

I also like QtCreator. QtCreator doesn't tie you to the Qt api (but has built-in Qt wizards if you want to use them). However, it does sorta tie you to their own 'make' tool, called QMake (which produces make files for GCC's make). You can use something like CMake if you want to though, but I personally like the QMake .pro files.

 

QtCreator is a very good IDE. It only has syntax highlighting for C++ (and a few other Qt-related things like the QMake files), but afaik it lacks support for other languages.

 

On Ubuntu I found it in the software center with a thing to include CMake instead of (or in addition to) QMake. Is there benefits of one over the other? Or does QMake just happen to be the default because its made to work with the IDE, but essentially they're the same?

Share this post


Link to post
Share on other sites

CMake and QMake serve the same purpose. There are others as well, but I don't have much experience with them.

A 'makefile' is a file that says what files are needed to make the program, and then you have a Make executable (GCC's being the most widespread) that reads the makefile and then builds each file using whatever tool is needed to build it. You can tell Make to compile files with the .cpp extension using GCC, or using Microsoft's compiler, or using another compiler. You can tell it to 'compile' .png files using your own command-line tool, to pre-convert the .pngs to powers of two textures, or to another format. Things of that nature.

CMake and QMake exist to add additional features to GCC's make, and generate GCC makefiles, as well as provide a more user-friendly syntax.

They use their own files and syntax, and when executed, generate makefiles and then execute GCC's make on those makefiles. (Or they can generate other files, like Visual Studio project files).

Unless you have personal preference or a project requirment to use CMake over QMake, I'd just use QMake. Better support in the Qt tools. But even without third-party support, QtCreator supports CMake (though you have to install CMake separately).

As someone inexperienced with makefiles, I find QMake files easy to understand and easy to edit, though they are less powerful/flexible that GCC makefiles, being focused purely on C++. I don't know if QMake files can, for example, tell your .png files to become power-of-two textures by calling your own command-line tools - but I never tried, so the feature may be in there somewhere.

Here's the complete (and rather large) QMake .pro file from my current game project, so you can get an idea for the QMake syntax:
http://ideone.com/kCMua3 (It's not naturally that organized - I manually edit the .pro file to organize it)

Edited by Servant of the Lord

Share this post


Link to post
Share on other sites
swiftcoder    18432

I pretty much exclusively develop with a tabbed text editor alongside a tabbed terminal window (interspersed by the occasional browser or file browser), all with a liberal dose of alt-tab'ing back and forth.

I was definitely considering this. What exactly do you use specifically? I might take a look at doing it that way, might be a good learning experience at the very least.

Sublime is my go-to text editor - it's even managed to replace ViM for my day-to-day editing tasks, and that's saying something. The $70 price tag may seem a little steep, but it's far and away the best GUI text editor on the market at this point, and one license lets you run it on as many computers/OS's as you like (plus you get access to the beta for Sublime 3, which adds symbol indexing, and a host of other improvements).

 

I tend to use CMake -> makefiles from the command line for compiling.

 

Debug with gdb on the command line too, but many people find this too arcane. There is always DDD, or the graphical debugger of your choice.

Share this post


Link to post
Share on other sites
AniMerrill    227

CMake and QMake serve the same purpose. There are others as well, but I don't have much experience with them.
Unless you have personal preference or a project requirment to use CMake over QMake, I'd just use QMake. Better support in the Qt tools. But even without third-party support, QtCreator supports CMake (though you have to install CMake separately).


As someone inexperienced with makefiles, I find QMake files easy to understand and easy to edit, though they are less powerful/flexible that GCC makefiles, being focused purely on C++. I don't know if QMake files can, for example, tell your .png files to become power-of-two textures by calling your own command-line tools - but I never tried, so the feature may be in there somewhere.

Here's the complete (and rather large) QMake .pro file from my current game project, so you can get an idea for the QMake syntax:
http://ideone.com/kCMua3 (It's not naturally that organized - I manually edit the .pro file to organize it)

 

Thank you for your explanation and example, I already knew a little bit about makefiles but I think I really get the idea now. I'll probably just roll up my sleeves and try to learn CMake, sounds like in the end it will be a little more useful to me even if QMake is easier.

 

Sublime is my go-to text editor - it's even managed to replace ViM for my day-to-day editing tasks, and that's saying something. The $70 price tag may seem a little steep, but it's far and away the best GUI text editor on the market at this point, and one license lets you run it on as many computers/OS's as you like (plus you get access to the beta for Sublime 3, which adds symbol indexing, and a host of other improvements).

 

I tend to use CMake -> makefiles from the command line for compiling.

 

Debug with gdb on the command line too, but many people find this too arcane. There is always DDD, or the graphical debugger of your choice.

 

I'm running on a zero dollar budget, so $70 even for the best thing ever isn't gonna happen. Although, maybe for my second game project, I'll finally be able to afford it xD For now I'm gonna try to use Qt Creator and since I've heard some good things about it I've got Geany in my back pocket which sounds like a good free alternative to something like Sublime.

 

Gonna take a look at that debugger though, sounds interesting.

Share this post


Link to post
Share on other sites
Bearhugger    1276

I haven't used Qt Creator extensively so I don't comment on it, but I have used Eclipse a lot, so in case it helps, here's my thoughts about it.

 

Advantages:

* The syntax highlighting is better than Visual Studio and supports more styles, plus Doxygen comment coloring.

* Code completion seemed good enough.

* You get free refactoring tools for C++ without having the shell 200$ for a lame commercial plugin. (Refactoring also happens in realtime in the editor which is pretty cool.)

* You can auto-generate your method stubs from a class definition. (If you can do that in VS I don't know how.)

* You can auto-generate getter and setters for the attributes of your choice..

* If you work with others, you can force coding conventions. (For example, we never use camelCasing where I work, but we hired an ex-Java guy who wrote all his methods like that. Eclipse immediately underlined his methods in red.)

* CppUnit integrated, if you're the type who'd rather spend hours write test than spend them debugging.

* If you program in any other language, chances are that there's a plugin for it too. (Python, Ruby, JavaScript, PHP, Objective-C, Java, you name it!)

* You can hold CTRL to make all your symbols turn into links and you can click on them to navigate through your code base.

* It has A LOT of plugins, and most of those are free. (In fact, plugins are what makes Eclipse what it is.)

* Tons of useful features for backup and source control, like git/svn/etc. plugins and export/import to zip.

 

Disadvangages:

* Debugging seems a bit lacking and the default interface looks confusing, even in Java. Plus it's slow. (Or maybe I'm just spoiled by Visual Studio.)

* It uses Java so you need the Java runtime. It's not incredibly slow and you probably won't notice unless debugging or refactoring though.

* The workspace-based project management system is confusing. Basically you pick a folder (which is by default NOT in your Documents folder) and all your Eclipse projects have to be there.

Share this post


Link to post
Share on other sites
swiftcoder    18432

* You can hold CTRL to make all your symbols turn into links and you can click on them to navigate through your code base.

This was the single feature that kept me using Eclipse for so long, despite its clunky interface and bloated processor/memory requirements.

Share this post


Link to post
Share on other sites
Overman    715

I have to agree. Eclipse is by far my IDE of choice. Not just for C++ but a plethora of other languages as well. Works on Windows, Linux, and Mac. It's super easy to use. It's open source (which is super cool). It has a ton of excellent plugins, a lot of support, and they are constantly rolling out new versions.

 

Eclipse is definitely the safe bet. Also, it's free.

Share this post


Link to post
Share on other sites

* You can hold CTRL to make all your symbols turn into links and you can click on them to navigate through your code base.

This was the single feature that kept me using Eclipse for so long, despite its clunky interface and bloated processor/memory requirements.

 

QtCreator has that too. Ctrl+Clicking a function name switches between the definition and the declaration, Ctrl+Clicking a variable name brings you to that variable's creation point, Ctrl+Clicking a variable type brings you to the declaration of a that type. I agree that it's very useful!

Share this post


Link to post
Share on other sites
mdias    823

Here's one more vote for QtCreator + CMake.

 

I've been using it on my project and it's pretty nice, and easy to learn too. I actually had problems using Qmake (.pro) files, and have had no problems whatsoever since the switch to CMake. It also makes it pretty easy to divide your project into submodules/libraries that it will almost automatically link to your final binary.

 

Using CMake has lots of advantages too, like:

  • generate project files for major IDEs
  • configure system to enable/disable features at build time
  • easy to configure the builds for each OS
  • lots of documentation online
  • really fast
  • detects modified files and only recompiles what's needed

And probably a lot more I can't remember right now.

Share this post


Link to post
Share on other sites

I just wanna make sure from the get go that my IDE won't leave me hanging somewhere later close to release. I narrowed it down to these three because they all had relatively good things said about them and each seems pretty close to having a working version of Clang ready for them which seems invaluable for the debugging process. Is there something I'm missing, or should I just suck it up and straight up use vim with the normal GCC compiler and just do everything by hand because I'm so paranoid XD

What's this about "sucking it up and using vim and gcc"? It's one of the best text editors around, and you aren't tied to any particular compiler with it either.

I'm a long time vim user for general text editing, but have never taken the time to properly set it up for C++ development because I have been essentially forced to use VS and other IDEs at work. This thread finally kicked me to action. So I spent a few hours trying out a bunch of plugins, booting out ones I didn't like, and wrote my configuration from scratch. The result is that I have the clang_complete plugin automatically running clang in the background, offering namespace and object member name completions as I type, and popping up syntax error highlighting with error and warning messages. ("Pretty close" for some other IDEs? Here today for vim.) I can jump to definitions with vim's built in tag support and ctags; vim has had that particular capability from the beginning since it was a vi feature. You can also click on stuff with a mouse to jump to definitions; I think that became possible in 1996 when vim first got a GUI.

I have used a little bit of Qt Creator and Eclipse, and used Visual Studio for years to do paid work, and the actual editors on all of them are honestly pretty bad compared to vim. VS became more bearable by using a paid plugin for the Professional edition, but still not good.

Share this post


Link to post
Share on other sites
AniMerrill    227

What's this about "sucking it up and using vim and gcc"? It's one of the best text editors around, and you aren't tied to any particular compiler with it either.

 

You have to keep in mind, I'm twenty two. Windows 95 was the first OS I used as a kid and have only used later installments of Windows until now. When I see vim, or emacs, I see a more complicated version of Notepad XD I know that they're still the best text editors probably, since you can basically customize IDE-like processes to your exact needs, but... idk. I was reading the tutorial for emacs and felt kinda punked. To my mind, having never been taught or learned as a kid/teen how to use vim or emacs, it seems a lot simpler to just do everything in a Notepad like editor and have the terminal up near by... even if it is an extra click or two.

 

If anyone's curious, I've basically decided to go the route of no IDE... at least until I can find something that works. Qt Creator confused me, if only because it seems to make the CMake file in a weird way but on the other hand... probably just need to learn CMake in general. Right now I'm using the default Ubuntu text editor (like gedit or something) which I hear you can customize too (and it seems to have minor syntax highlighting by default). Want to eventually get into Vim or Emacs, or maybe take a swing at something like Geany which seems to be a minimal IDE or try Qt Creator again after I know some of the basic concepts of developing on Ubuntu.

 

Thanks again for everyone's advice, I learned a lot from this discussion :D If you can give further advice or maybe some tutorial links on Vim, Emacs, Qt Creator, or general terminal based development, that would be appreciated.

Share this post


Link to post
Share on other sites
swiftcoder    18432

Right now I'm using the default Ubuntu text editor (like gedit or something) which I hear you can customize too (and it seems to have minor syntax highlighting by default).

There is a special place in my heart for gedit - a dark place, for one of the most useless programmer's text editors ever devised ;)

Share this post


Link to post
Share on other sites
el junk    191

To my mind, having never been taught or learned as a kid/teen how to use vim or emacs, it seems a lot simpler to just do everything in a Notepad like editor and have the terminal up near by... even if it is an extra click or two.

 

These editors have a certain level of knowledge that you need to gain before you can use them. It's really not that much info at all, but it feels like a lot because, in addition to learning, it takes practice using something that might seem bizarre at first.

 

Once you understand something like vim, those "simpler editors" become too simple, way too simple. e.g. I used to not care about moving around text with the arrow keys, but now I feel crippled without an edit mode.

 

I recommend reading this post on understanding vim: http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this