Can't set live build C++ version


#1

I even tried the compiler options and set “/std:c++latest”, but it still doesn’t build. No missing includes or anything, but when

#include <regex>

is used, I get errors related to missing compiler features.

I would love to get this working correctly, so I can prototype my components faster.


#2

Unfortunately this is a more fundamental problem than setting the C++ standard.

The Projucer uses LLVM’s JIT under the hood, but the JIT is far from feature complete and cannot compile some of the more common std:: headers - it will also choke on stringstream, map and a few more :frowning: . Fixing this in LLVM-land is far from trivial. JUCE contains it’s own implementation of std::function which we use with the live build (and when targeting very old versions of OS X), but replacing any of the others would be a much bigger job.

@ed95 is currently upgrading the live build backend of the latest version of Clang, but, unfortunately, there’s no guarantee that it will improve things in this regard.


#3

So my only option is to create a “build my widget” project that avoids using std:: stuff as much as possible, so I can use the live build to prototype, and upon completion copy it to my real project?


#4

It might be possible to use the JUCE_PROJUCER_LIVE_BUILD macro to conditionally exclude problematic include statements and blocks of code.


#5

Unfortunately it would get too messy as too much code relies on these classes and the inter-dependencies.

But using a dummy project for prototyping is good enough.

Thanks for sorting it out for me :smiley: