From ea1ffd91fc335a3e2ac4593bd6fcabe62c3973ef Mon Sep 17 00:00:00 2001 From: Dan Rosser Date: Tue, 1 Sep 2026 00:34:34 +1000 Subject: [PATCH] Align C++23 / C17 as the project dialect VS vs/vs2026 props own stdcpp23 + stdc17 so app templates and openframeworksLib no longer stamp stdcpplatest over the core lib. macos/tvOS match osx at c++23/c17 and drop AGL. make prefers -std=c++23 with a c++2b fallback on older Apple Clang. vs2019 stays C++17 for that toolchain. Fixes #8547 --- .../project/macos/CoreOF.xcconfig | 5 +++-- .../project/macos/config.macos.default.mk | 7 ++++++- .../openFrameworksLib.xcodeproj/project.pbxproj | 6 ++++-- .../project/osx/config.osx.default.mk | 7 ++++++- .../project/tvOS/CoreOF.xcconfig | 3 ++- .../project/vs/openFrameworksCommon.props | 7 ++----- .../project/vs/openframeworksLib.vcxproj | 10 ++++------ .../project/vs2019/openFrameworksCommon.props | 5 +---- .../project/vs2019/openframeworksLib.vcxproj | 10 ++++------ .../project/vs2026/openFrameworksCommon.props | 7 ++----- .../project/vs2026/openframeworksLib.vcxproj | 10 ++++------ scripts/templates/macos/Project.xcconfig | 4 ++-- scripts/templates/macos/config.make | 4 ++-- .../macos/emptyExample.xcodeproj/project.pbxproj | 4 ++-- scripts/templates/osx/config.make | 4 ++-- .../tvOS/emptyExample.xcodeproj/project.pbxproj | 8 ++++---- scripts/templates/vs/emptyExample.vcxproj | 14 ++++++-------- scripts/templates/vs2019/emptyExample.vcxproj | 16 ++++++++-------- scripts/templates/vs2026/emptyExample.vcxproj | 16 ++++++++-------- 19 files changed, 72 insertions(+), 75 deletions(-) diff --git a/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig b/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig index d2389a38f4a..6c23d96d899 100644 --- a/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig +++ b/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig @@ -1,7 +1,8 @@ // define which C++ library is required to build, based on target architecture CLANG_CXX_LIBRARY = libc++ CLANG_ENABLE_OBJC_ARC = YES -CLANG_CXX_LANGUAGE_STANDARD = c++17 +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 MACOSX_DEPLOYMENT_TARGET = 10.15 MISC_FLAGS = "-ObjC" @@ -50,7 +51,7 @@ OF_CORE_LIBS = $(MISC_FLAGS) OF_CORE_HEADERS = $(HEADER_OF) $(HEADER_FREEIMAGE) $(HEADER_UTF8) $(HEADER_JSON) $(HEADER_GLM) $(HEADER_TESS2) $(HEADER_CAIRO) $(HEADER_RTAUDIO) $(HEADER_GLFW) $(HEADER_FREETYPE) $(HEADER_FREETYPE2) $(HEADER_CURL) $(HEADER_URIPARSER) $(HEADER_PUGIXML) $(HEADER_GLEW) $(HEADER_CURL) $(HEADER_OPENSSL) $(HEADER_BROTLI) -OF_CORE_FRAMEWORKS = -framework Accelerate -framework AGL -framework AppKit -framework ApplicationServices -framework AudioToolbox -framework AVFoundation -framework Cocoa -framework CoreAudio -framework CoreFoundation -framework CoreMedia -framework CoreServices -framework CoreVideo -framework IOKit -framework OpenGL -framework QuartzCore -framework Security -framework CFNetwork +OF_CORE_FRAMEWORKS = -framework Accelerate -framework AppKit -framework ApplicationServices -framework AudioToolbox -framework AVFoundation -framework Cocoa -framework CoreAudio -framework CoreFoundation -framework CoreMedia -framework CoreServices -framework CoreVideo -framework Foundation -framework IOKit -framework OpenGL -framework QuartzCore -framework Security -framework CFNetwork -framework SystemConfiguration -framework Metal //-framework AudioToolbox -framework Accelerate -framework AVFoundation -framework CoreAudio -framework CoreGraphics -framework CoreLocation -framework CoreMotion -framework CoreMedia -framework CoreVideo -framework Foundation -framework GameController -framework GLKit -framework MapKit -framework OpenAL -framework OpenGLES -framework UIKit -framework Security -framework QuartzCore -framework CoreHaptics // diff --git a/libs/openFrameworksCompiled/project/macos/config.macos.default.mk b/libs/openFrameworksCompiled/project/macos/config.macos.default.mk index c6a9eebaf9d..f19c20b19b6 100644 --- a/libs/openFrameworksCompiled/project/macos/config.macos.default.mk +++ b/libs/openFrameworksCompiled/project/macos/config.macos.default.mk @@ -82,7 +82,12 @@ ifndef MAC_OS_C_VER endif ifndef MAC_OS_CPP_VER - MAC_OS_CPP_VER = -std=c++2b + # Prefer ISO C++23. Apple Clang 15 from the command line only accepts the draft alias c++2b. + ifeq ($(shell echo 'int main(){return 0;}' | xcrun clang++ -std=c++23 -x c++ - -fsyntax-only >/dev/null 2>&1; echo $$?),0) + MAC_OS_CPP_VER = -std=c++23 + else + MAC_OS_CPP_VER = -std=c++2b + endif endif # Link against libstdc++ to silence tr1/memory errors on latest versions of osx diff --git a/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj b/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj index 1b8e80156e3..073bd086f0d 100644 --- a/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj +++ b/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj @@ -2062,7 +2062,8 @@ BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LANGUAGE_STANDARD = "c++23"; + CLANG_C_LANGUAGE_STANDARD = c17; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; @@ -2179,7 +2180,8 @@ BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LANGUAGE_STANDARD = "c++23"; + CLANG_C_LANGUAGE_STANDARD = c17; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; diff --git a/libs/openFrameworksCompiled/project/osx/config.osx.default.mk b/libs/openFrameworksCompiled/project/osx/config.osx.default.mk index c3aa625eb6c..84da19082a1 100644 --- a/libs/openFrameworksCompiled/project/osx/config.osx.default.mk +++ b/libs/openFrameworksCompiled/project/osx/config.osx.default.mk @@ -82,7 +82,12 @@ ifndef MAC_OS_C_VER endif ifndef MAC_OS_CPP_VER - MAC_OS_CPP_VER = -std=c++2b + # Prefer ISO C++23. Apple Clang 15 from the command line only accepts the draft alias c++2b. + ifeq ($(shell echo 'int main(){return 0;}' | xcrun clang++ -std=c++23 -x c++ - -fsyntax-only >/dev/null 2>&1; echo $$?),0) + MAC_OS_CPP_VER = -std=c++23 + else + MAC_OS_CPP_VER = -std=c++2b + endif endif # Link against libstdc++ to silence tr1/memory errors on latest versions of osx diff --git a/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig b/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig index 83f4ddc762c..8515895bcfb 100644 --- a/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig +++ b/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig @@ -1,7 +1,8 @@ // once all libraries are compiled for libc++ / all architectures CLANG_CXX_LIBRARY = libc++ CLANG_ENABLE_OBJC_ARC = YES -CLANG_CXX_LANGUAGE_STANDARD = c++17 +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 TVOS_DEPLOYMENT_TARGET = 15.0 OF_USING_STD_FS = YES diff --git a/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props b/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props index 90494c5baaa..7d686f659c8 100644 --- a/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props +++ b/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props @@ -11,12 +11,9 @@ %(AdditionalLibraryDirectories) - stdcpplatest - - + stdcpp23 + stdc17 CompileAsCpp - - /Zc:__cplusplus %(AdditionalOptions) diff --git a/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj b/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj index 66deb3a46fe..cf5d503af40 100644 --- a/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj +++ b/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj @@ -86,12 +86,10 @@ Level1 false CompileAsCpp - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) false - stdc17 - stdc17 - stdc17 + true true true @@ -129,9 +127,9 @@ MultiThreadedDLL Level1 true - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) - stdc17 + false true true diff --git a/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props b/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props index cf1fc10e4d8..06185a2e8a7 100644 --- a/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props +++ b/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props @@ -12,11 +12,8 @@ stdcpp17 - - + stdc17 CompileAsCpp - - /Zc:__cplusplus %(AdditionalOptions) diff --git a/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj b/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj index 43628f2f131..6a48501a3da 100644 --- a/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj +++ b/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj @@ -83,12 +83,10 @@ Level3 false CompileAsCpp - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) false - stdc17 - stdc17 - stdc17 + true true true @@ -124,9 +122,9 @@ MultiThreadedDLL Level1 true - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) - stdc17 + false true true diff --git a/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props b/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props index 90494c5baaa..7d686f659c8 100644 --- a/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props +++ b/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props @@ -11,12 +11,9 @@ %(AdditionalLibraryDirectories) - stdcpplatest - - + stdcpp23 + stdc17 CompileAsCpp - - /Zc:__cplusplus %(AdditionalOptions) diff --git a/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj b/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj index 20309013719..5e2dbc6051f 100644 --- a/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj +++ b/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj @@ -83,12 +83,10 @@ Level1 false CompileAsCpp - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) false - stdc17 - stdc17 - stdc17 + true true true @@ -126,9 +124,9 @@ MultiThreadedDLL Level3 true - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) - stdc17 + false true true diff --git a/scripts/templates/macos/Project.xcconfig b/scripts/templates/macos/Project.xcconfig index 4dc5ec5b058..31213ac6bbc 100644 --- a/scripts/templates/macos/Project.xcconfig +++ b/scripts/templates/macos/Project.xcconfig @@ -5,8 +5,8 @@ OF_PATH = ../../.. //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE #include "../../../libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig" -//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem -CLANG_CXX_LANGUAGE_STANDARD = c++17 +CLANG_CXX_LANGUAGE_STANDARD = c++23 +CLANG_C_LANGUAGE_STANDARD = c17 MACOSX_DEPLOYMENT_TARGET = 10.15 // App Settings diff --git a/scripts/templates/macos/config.make b/scripts/templates/macos/config.make index 77a8465d1ce..66b58dd070a 100644 --- a/scripts/templates/macos/config.make +++ b/scripts/templates/macos/config.make @@ -143,6 +143,6 @@ # macos template -# Uncomment/comment below to switch between C++11 and C++17 ( or newer ). On macOS C++17 needs 10.15 or above. +# Default is C++23 (falls back to c++2b on older Apple Clang). Uncomment to override. # export MAC_OS_MIN_VERSION = 10.15 -# export MAC_OS_CPP_VER = -std=c++17 +# export MAC_OS_CPP_VER = -std=c++23 diff --git a/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj b/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj index 0f8d71591a2..65e567314da 100644 --- a/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj +++ b/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj @@ -378,7 +378,7 @@ "PRODUCT_NAME": "$(TARGET_NAME)", "SUPPORTED_PLATFORMS": "appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator", "GCC_WARN_64_TO_32_BIT_CONVERSION": "YES", - "CLANG_CXX_LANGUAGE_STANDARD": "c++20", + "CLANG_CXX_LANGUAGE_STANDARD": "c++23", "GCC_DYNAMIC_NO_PIC": "NO", "CLANG_WARN__DUPLICATE_METHOD_MATCH": "YES", "DEBUG_INFORMATION_FORMAT": "dwarf", @@ -945,7 +945,7 @@ "PRODUCT_NAME": "$(TARGET_NAME)", "SUPPORTED_PLATFORMS": "appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator", "GCC_WARN_64_TO_32_BIT_CONVERSION": "YES", - "CLANG_CXX_LANGUAGE_STANDARD": "c++20", + "CLANG_CXX_LANGUAGE_STANDARD": "c++23", "LOCALIZATION_PREFERS_STRING_CATALOGS": "YES", "CLANG_WARN__DUPLICATE_METHOD_MATCH": "YES", "DEBUG_INFORMATION_FORMAT": "dwarf-with-dsym", diff --git a/scripts/templates/osx/config.make b/scripts/templates/osx/config.make index 8e653ed6848..555164918ae 100644 --- a/scripts/templates/osx/config.make +++ b/scripts/templates/osx/config.make @@ -143,6 +143,6 @@ # osx template -# Uncomment/comment below to switch between C++11 and C++17 ( or newer ). On macOS C++17 needs 10.15 or above. +# Default is C++23 (falls back to c++2b on older Apple Clang). Uncomment to override. # export MAC_OS_MIN_VERSION = 10.15 -# export MAC_OS_CPP_VER = -std=c++17 +# export MAC_OS_CPP_VER = -std=c++23 diff --git a/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj b/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj index 323f658aa31..03a1eba406e 100644 --- a/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj +++ b/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj @@ -163,7 +163,7 @@ "GCC_WARN_ABOUT_RETURN_TYPE": "YES_ERROR", "GCC_WARN_UNDECLARED_SELECTOR": "YES", "CLANG_ENABLE_MODULES": "YES", - "CLANG_CXX_LANGUAGE_STANDARD": "c++17", + "CLANG_CXX_LANGUAGE_STANDARD": "c++23", "GCC_NO_COMMON_BLOCKS": "YES", "GCC_WARN_UNINITIALIZED_AUTOS": "YES_AGGRESSIVE", "CLANG_WARN_INT_CONVERSION": "YES", @@ -208,7 +208,7 @@ "DEVELOPMENT_TEAM": "", "LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER": "NO", "INFOPLIST_FILE": "ofxtvOS-Info.plist", - "CLANG_CXX_LANGUAGE_STANDARD": "c++17", + "CLANG_CXX_LANGUAGE_STANDARD": "c++23", "TVOS_DEPLOYMENT_TARGET": "17.2", "HEADER_SEARCH_PATHS": "$(OF_CORE_HEADERS)", "PRODUCT_NAME": "$(TARGET_NAME)", @@ -609,7 +609,7 @@ "CLANG_WARN_DIRECT_OBJC_ISA_USAGE": "YES_ERROR", "CLANG_WARN__DUPLICATE_METHOD_MATCH": "YES", "SDKROOT": "appletvos", - "CLANG_CXX_LANGUAGE_STANDARD": "c++17", + "CLANG_CXX_LANGUAGE_STANDARD": "c++23", "ENABLE_TESTABILITY": "YES", "CLANG_WARN_BOOL_CONVERSION": "YES", "CLANG_WARN_UNREACHABLE_CODE": "YES", @@ -654,7 +654,7 @@ "DEVELOPMENT_TEAM": "", "LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER": "NO", "INFOPLIST_FILE": "ofxtvOS-Info.plist", - "CLANG_CXX_LANGUAGE_STANDARD": "c++17", + "CLANG_CXX_LANGUAGE_STANDARD": "c++23", "TVOS_DEPLOYMENT_TARGET": "17.2", "HEADER_SEARCH_PATHS": "$(OF_CORE_HEADERS)", "PRODUCT_NAME": "$(TARGET_NAME)", diff --git a/scripts/templates/vs/emptyExample.vcxproj b/scripts/templates/vs/emptyExample.vcxproj index 3168c17f9fb..643f23a1289 100644 --- a/scripts/templates/vs/emptyExample.vcxproj +++ b/scripts/templates/vs/emptyExample.vcxproj @@ -85,7 +85,6 @@ %(AdditionalIncludeDirectories) CompileAsCpp true - stdcpp23 /Zc:__cplusplus %(AdditionalOptions) @@ -129,7 +128,6 @@ Level3 %(AdditionalIncludeDirectories) CompileAsCpp - stdcpplatest /Zc:__cplusplus %(AdditionalOptions) @@ -181,12 +179,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle @@ -198,12 +196,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle @@ -215,12 +213,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle diff --git a/scripts/templates/vs2019/emptyExample.vcxproj b/scripts/templates/vs2019/emptyExample.vcxproj index 667c101ba3b..d648bf7458b 100644 --- a/scripts/templates/vs2019/emptyExample.vcxproj +++ b/scripts/templates/vs2019/emptyExample.vcxproj @@ -85,7 +85,7 @@ %(AdditionalIncludeDirectories) CompileAsCpp true - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) @@ -129,7 +129,7 @@ Level3 %(AdditionalIncludeDirectories) CompileAsCpp - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) @@ -181,12 +181,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle @@ -198,12 +198,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle @@ -215,12 +215,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle diff --git a/scripts/templates/vs2026/emptyExample.vcxproj b/scripts/templates/vs2026/emptyExample.vcxproj index a6958fd6a86..e028c737a9d 100644 --- a/scripts/templates/vs2026/emptyExample.vcxproj +++ b/scripts/templates/vs2026/emptyExample.vcxproj @@ -85,7 +85,7 @@ %(AdditionalIncludeDirectories) CompileAsCpp true - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) @@ -129,7 +129,7 @@ Level3 %(AdditionalIncludeDirectories) CompileAsCpp - stdcpplatest + /Zc:__cplusplus %(AdditionalOptions) @@ -181,12 +181,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle @@ -198,12 +198,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle @@ -215,12 +215,12 @@ - stdc17 + true OldStyle - stdc17 + true OldStyle