diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 32e6fd0a58..5fd7e5c6a6 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -287,7 +287,7 @@ void Project::initialiseProjectValues() useAppConfigValue.referTo (projectRoot, Ids::useAppConfig, getUndoManager(), true); addUsingNamespaceToJuceHeader.referTo (projectRoot, Ids::addUsingNamespaceToJuceHeader, getUndoManager(), true); - cppStandardValue.referTo (projectRoot, Ids::cppLanguageStandard, getUndoManager(), "14"); + cppStandardValue.referTo (projectRoot, Ids::cppLanguageStandard, getUndoManager(), "14"); headerSearchPathsValue.referTo (projectRoot, Ids::headerPath, getUndoManager()); preprocessorDefsValue.referTo (projectRoot, Ids::defines, getUndoManager()); diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index fbbb854830..9061570a7c 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -209,8 +209,14 @@ public: bool shouldDisplaySplashScreen() const { return displaySplashScreenValue.get(); } String getSplashScreenColourString() const { return splashScreenColourValue.get(); } - static StringArray getCppStandardStrings() { return { "C++14", "C++17", "Use Latest" }; } - static Array getCppStandardVars() { return { "14", "17", "latest" }; } + static StringArray getCppStandardStrings() { return { "C++14", "C++17", "C++20", "Use Latest" }; } + static Array getCppStandardVars() { return { "14", "17", "20", "latest" }; } + + static String getLatestNumberedCppStandardString() + { + auto cppStandardVars = getCppStandardVars(); + return cppStandardVars[cppStandardVars.size() - 2]; + } String getCppStandardString() const { return cppStandardValue.get(); } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h index cd791fc349..3c15f72ffa 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h @@ -1435,7 +1435,7 @@ private: auto projectStandard = project.getCppStandardString(); if (projectStandard == "latest") - return String ("17"); + return project.getLatestNumberedCppStandardString(); return projectStandard; }(); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h index 64e6af9940..1ad86918fe 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h @@ -542,7 +542,7 @@ private: auto cxxStandard = project.getCppStandardString(); if (cxxStandard == "latest") - cxxStandard = "17"; + cxxStandard = project.getLatestNumberedCppStandardString(); out << " CXX_STANDARD " << cxxStandard << newLine; @@ -671,7 +671,7 @@ private: auto cxxStandard = project.getCppStandardString(); if (cxxStandard == "latest") - cxxStandard = "17"; + cxxStandard = project.getLatestNumberedCppStandardString(); out << " CXX_STANDARD " << cxxStandard << newLine; @@ -1076,7 +1076,7 @@ private: auto cxxStandard = project.getCppStandardString(); if (cxxStandard == "latest") - cxxStandard = "17"; + cxxStandard = project.getLatestNumberedCppStandardString(); out << " CXX_STANDARD " << cxxStandard << newLine; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h index c175a02464..5c47df04d7 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h @@ -392,7 +392,7 @@ private: auto cppStandard = config.project.getCppStandardString(); if (cppStandard == "latest") - cppStandard = "17"; + cppStandard = project.getLatestNumberedCppStandardString(); flags.add ("-std=" + String (shouldUseGNUExtensions() ? "gnu++" : "c++") + cppStandard); } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h index 4c4e5b89bb..0121297f02 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h @@ -625,7 +625,7 @@ private: auto cppStandard = project.getCppStandardString(); if (cppStandard == "latest") - cppStandard = "17"; + cppStandard = project.getLatestNumberedCppStandardString(); result.add ("-std=" + String (shouldUseGNUExtensions() ? "gnu++" : "c++") + cppStandard); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 6ab172b1b0..f5afb6d194 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -1653,7 +1653,7 @@ public: auto cppStandard = owner.project.getCppStandardString(); if (cppStandard == "latest") - cppStandard = "17"; + cppStandard = owner.project.getLatestNumberedCppStandardString(); s.set ("CLANG_CXX_LANGUAGE_STANDARD", (String (owner.shouldUseGNUExtensions() ? "gnu++" : "c++") + cppStandard).quoted());