(I picked -developer rather than -user because this is in the weeds of build issues. Please feel free to tell me I chose wrongly if so.)
I maintain the qgis entry in pkgsrc, which is currently at 3.28.13. (For now, we are packaging LTR.) As part of debugging problems related to sip 6.8.0 (see https://github.com/qgis/QGIS/issues/55481 ), I am trying to clean up the compiler situation. pkgsrc distinguishes between requiring that the compiler used supports c++17 modifying the compiler wrappers to insert --std=c++17, because requiring that a compiler supports c++17 is not the same as requiring that c++17 is default, and sometimes code sssumes it is. My view has generally been that one cannot assume the default std of a compiler and that if a program requires a particular level it must test for and pass --std=c++NN (or gnu++NN if that's how it is). I am currently building qgis with a requirement that c++17 be available (which is satisfied because the base system compiler is gcc10) but not set to force --std. I see a warning: /tmp/work/geography/qgis/work/qgis-3.28.13/src/core/settings/qgssettingsregistrycore.h:178:18: warning: inline variables are only available with '-std=c++17' or '-std=gnu++17' 178 | static const inline QgsSettingsEntryBool settingsEnableWMSTilePrefetching = QgsSettingsEntryBool( QStringLiteral( "enable_wms_tile_prefetch" ), QgsSettings::Prefix::WMS, false, QStringLiteral( "Whether to include WMS layers when rendering tiles adjacent to the visible map area" ) ); | ^~~~~~ which suggests that the build is using C++17 features without having inserted --std=c++17. Reading https://gcc.gnu.org/projects/cxx-status.html it looks like C++17 became default in gcc 11, and C++14 is the default in gcc 6.1 through 10. Looking at INSTALL.md, I don't see a requirement for C++17 stated at all. Looking at CMakeLists.txt, I see some kind of c++17 forcing for MSVC, but I don't see anything for other cases. I see some kind of forcing in individual CMakeLists. So: Is it an error of me to build without wrappers that force --std=c++17? Is this just a qgis bug, that files that require C++17 aren't cmake-coded to pass --std=c++17? Is this harmless and should be ignored? something else? _______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer