Alternative to Visual Studio?

Is there any workable alternative to Visual Studio that has a decent editor and debugger and will let me uses C++11?

Code::Blocks is an alternative:

There’s also Eclipse:

I haven’t looked into their C++11 compatibility though…

Well, with Eclipse you can use the very latest GCC and get C++11 support that is significantly better than even VS2012. Last time I checked Code::Blocks it came with a rather ancient version of GCC (and looks like it still does), which can be updated, but the IDE seems to be significantly less feature rich than Eclipse. As a downside, Eclipse, as a Java application, is a little more resource wasting, but nothing a contemporary average PC cannot handle. The age of Code::Blocks and the absence of active development practically means the IDE won’t recognize C++11 features even if they are supported by the compiler. Eclipse is in active development and C++11 feature support as just a tad behind the compilers, it usually takes a little time between the implementation of a certain feature in GCC and adding support for it in the IDE.

A few weeks in, I really like Visual Studio 2012, adding Visual Assist X makes for a fairly decent IDE. Of course,C++11 feature support seems to lag behind significantly compared to GCC or Clang. I’ve been using mostly QtCreator (with Qt) but I am looking forward to switch to JUCE for various reasons. Creator is a fairly decent IDE and does work on the big three - Windows, Linux and MacOS, but I am not sure how well will it stack with JUCE. Being in active development, C++11 features slowly but steadily make their way into the IDE.

It’s hard for me to take anyone seriously when they list Eclipse and Code:Blocks as “alternatives” …

You came, you asked, ye have received alternatives! Google is your only hope.

It does constantly amaze me that so many people actually use eclipse. It really is a car-crash of an app. Sure, there’s a lot of functionality in there if you can be bothered to figure out how it all works and can tolerate the appalling design, but it just makes me angry when I try to use it. I guess it’s what you get when hundreds of people contribute to a project without any top-down vision for its overall design.

Jules, in your eyes, beyond VS, what else is there that’s worthwhile?

I use Xcode, which is ok. Haven’t seen anything else that I like. Although I’ve never actually tried QtCreator, as that’d feel like I was fraternising with the enemy :slight_smile:

Today I wouldn’t recommend Code::Blocks to anyone, it is pretty much a done deal, it is not good enough even for learning, unless for some reason you don’t want to learn and use C++11. I haven’t used Eclipse for C++, but for Java I kind of like the “reverse” workflow it enables - just using non-existing methods to create the backbone structure of a program and have the IDE generate the methods and create the implementations later. For me it happens to work faster than first designing the classes and then using them, as backwards as it may be, letting the usage define the design of a class is faster. I don’t have a lot of love for either Java or Eclipse, but after using the IDE I can’t say it is bad. It does seem to offer a fair amount of C++ functionality too, it certainly goes further than just a text editor with a button to launch the compiler.

At this point it seems Eclipse and QtCreator are the only somewhat viable “alternatives”, of course if you don’t consider installing MacOS in a VM and running Xcode. The “intellisense”/autocomplete feature of Creator is far better than what VS can offer out of the box. It has spoiled me so much I can hardly use VS without VAX. Well, I can, but it is tedious.

Qt Creator holds great promise. There are some things that are actually BETTER than Visual Studio! For example, live updating of editor windows during pane resizing.

But have you figured out how to make a statically linked application? It would be nice if there was a simple JUCE demo that was statically linked and had a Qt .pro file or whatever it is they use.

Now if Introjucer had a Qt exporter that gave me a statically linked output I would give serious though to switching, since I would gain access to C++11 and also gain freedom from Windows 8.

I haven’t tried it myself, because I am using the LGPL for proprietary source, which is not allowed to statically link to Qt, you either need to pay for Qt commercial (roughly the price of a good kidney) or go open source :slight_smile:

But on the forums I have read of questions and success for static linking. I myself have troubles getting JUCE to work with VS2012, so feel free to check the resources and report your success :slight_smile:

On a side note, after having used Qt for a while, I really don’t see it as a JUCE nemesis :slight_smile: I am yet to go into this wonderful framework, and from an initial perspective, the APIs are a little differently structured, which will probably take some getting used to. The reason I want to move away fro Qt is as big as it is, it still lacks fundamental stuff that I am interested in, such as proficient audio API and there is no official support for mobile platforms yet. Also the main body of framework development efforts is focused on QML rather than C++, new features are exclusive to QML, the underlying API doesn’t have a public interface, and I am not really keen on “yet another proprietary language” just because Nokia decided to reinvent the wheel a half decade too late. Qt has recently been acquired by Digia and there were some promises made, but there is doubt and uncertainly, and I’ve been eying JUCE for quite sometime, so here I am :slight_smile: Getting into an extra framework has never hurt anyone.

Well like I said a few times, you don’t need to use Qt the library when you use Qt creator the IDE. Let’s understand the following:

  • Qt is a cross platform library much like JUCE

  • “Qt Creator” is a multiplatform IDE, which uses MinGW for the compiler and debugger. It can also use the Visual Studio compiler.

  • It is not necessary to use the Qt library when building apps with Qt Creator.

When I talk about static linking, I’m talking about linking to the necessary runtimes (the C runtime not the Qt library). This seems to be a peculiarity of MinGW and some obscure methods for setting flags via QMake. This thread describes the problem:

To repeat, I am not talking about linking to the Qt library (which is certainly a “competitor” to JUCE) but rather I am speaking of the C runtime.

I do distinguish an IDE from a framework, I don’t know what led you to imply I don’t. I just said I haven’t used static linking with QtCreator mostly because I use it for Qt, to which I cannot link statically. As for the competition - technically it is true, but in practice I think JUCE and Qt aim at different crowds, the difference in licensing fees is significant, as is the difference in functionality and platform support. It is a little like saying a school bus is a competitor to a mini van.

Because you linked to discussion posts about statically linking the Qt library. I’m talking about an app that is statically linked to the C runtime.

Not explicitly, it was just a query for “static linking” which returned arbitrary results, irregardless of whether it was in the context of the Qt framework or other libraries. Sorry for the misunderstanding.

Right. The problem is that 99% of people who want static linking, want it with the Qt libraries, which is not the use-case I am envisioning. I wasted a day trying to get a simple JUCE app to link statically but in the end I had to give up.

Wouldn’t using the Visual Studio compiler enable statical linking?
As far as I understand statical linking is a problem of mingw but this is mainly based on what I read in threads and links here.


Maybe, but the whole point of switching off Visual Studio is to…well, switch off Visual Studio! If we use the Visual Studio compiler from Qt Creator’s QMake system then that defeats the purpose. This means no c++11 support, etc… And if Microsoft decides that the Visual Studio 2012 compiler will only run on Windows 8 (very likely) well then, we’re screwed.

It runs on windows 7 just fine. I don’t see a reason for that to change in the future. At least not for a few more years, 7 is still a new product, it won’t make sense to drop support for it in the MS compiler.