Hi Hernán,

I switched to clang 19 to compile QGIS with Qt6 on Ubuntu. There is a handy update-alternatives command to switch compiler versions, and I switch them all to clang before compiling QGIS.

jgr@dragon:~/dev/cpp/build-qgis-qt6$ gcc --version
Ubuntu clang version19.1.1(1ubuntu1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
jgr@dragon:~/dev/cpp/build-qgis-qt6$ c++ --version
Ubuntu clang version19.1.1(1ubuntu1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
jgr@dragon:~/dev/cpp/build-qgis-qt6$ cc --version
Ubuntu clang version19.1.1(1ubuntu1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin

I hope it helps,

Jorge

On 29/04/25 08:04, Hernán De Angelis via QGIS-Developer wrote:
Hi

I seek help in understanding errors (see excerpt below) I am currently experiencing while building QGIS master in a fresh openSUSE Tumbleweed install. These errors seem to originate in nlohmann json. I am used to compile QGIS from source but never seen these errors before and have trouble figuring out where they originate and what a possible solution could be.

I am using Qt 6.9.0, and tried compiling using both GCC 14 and 15. Passing the CXX flag "-std=c++17" does not seem to help. I tried using NLOHMANN both internal and also using the latest version compiled locally (3.12, as in error log below) but both fail in a similar way.

I compiled QGIS master as late as 6 april without problems in a previous openSUSE install. There is a very real the possibility that recent changes in GCC14 and 15 regarding required standards are playing a part here, as well as packaging changes in openSUSE Tumbleweed. However, as I am unsure what the cause may be I would like to ask the developers if these errors look familiar to you and if they suggest something.

Thanks in advance

Hernán








[ 12%] Built target staged-plugins-on-build
In file included from /usr/local/src/QGIS/external/nlohmann/detail/value_t.hpp:16,                  from /usr/local/src/QGIS/external/nlohmann/detail/exceptions.hpp:20,                  from /usr/local/src/QGIS/external/nlohmann/detail/conversions/from_json.hpp:23,                  from /usr/local/src/QGIS/external/nlohmann/adl_serializer.hpp:14,
                 from /usr/local/src/QGIS/external/nlohmann/json.hpp:34,
                 from /usr/local/src/QGIS/external/pdal_wrench/vpc.cpp:26:
/usr/local/src/QGIS/external/nlohmann/detail/macro_scope.hpp:257:63: error: wrong number of template arguments (11, should be at least 0)
  257 |     AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>
| ^
/usr/local/src/QGIS/external/nlohmann/detail/meta/type_traits.hpp:53:22: note: in expansion of macro ‘NLOHMANN_BASIC_JSON_TPL’
   53 | struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/pdal/PDALUtils.hpp:39,
                 from /usr/local/include/pdal/PointRef.hpp:37,
                 from /usr/local/include/pdal/Geometry.hpp:37,
                 from /usr/local/src/QGIS/external/pdal_wrench/vpc.hpp:18,
                 from /usr/local/src/QGIS/external/pdal_wrench/vpc.cpp:19:
/usr/local/include/pdal/JsonFwd.hpp:40:7: note: provided for ‘template<template<class U, class V, class ... Args> class ObjectType, template<class U, class ... Args> class ArrayType, class StringType, class BooleanType, class NumberIntegerType, class NumberUnsignedType, class NumberFloatType, template<class U> class AllocatorType, template<class T, class SFINAE> class JSONSerializer, class BinaryType> class nlohmann::basic_json’
   40 | class basic_json;
      |       ^~~~~~~~~~
In file included from /usr/local/src/QGIS/external/nlohmann/detail/exceptions.hpp:25: /usr/local/src/QGIS/external/nlohmann/detail/meta/type_traits.hpp:53:45: error: template argument 1 is invalid
   53 | struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
      |                                             ^
/usr/local/src/QGIS/external/nlohmann/detail/macro_scope.hpp:257:63: error: wrong number of template arguments (11, should be at least 0)
  257 |     AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>
| ^
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:51:28: note: in expansion of macro ‘NLOHMANN_BASIC_JSON_TPL’
   51 |     struct string_t_helper<NLOHMANN_BASIC_JSON_TPL>
      |                            ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:40:7: note: provided for ‘template<template<class U, class V, class ... Args> class ObjectType, template<class U, class ... Args> class ArrayType, class StringType, class BooleanType, class NumberIntegerType, class NumberUnsignedType, class NumberFloatType, template<class U> class AllocatorType, template<class T, class SFINAE> class JSONSerializer, class BinaryType> class nlohmann::basic_json’
   40 | class basic_json;
      |       ^~~~~~~~~~
In file included from /usr/local/src/QGIS/external/nlohmann/json.hpp:50:
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:51:51: error: template argument 1 is invalid
   51 |     struct string_t_helper<NLOHMANN_BASIC_JSON_TPL>
      |                                                   ^
/usr/local/src/QGIS/external/nlohmann/json.hpp:104:30: error: reference to ‘json_pointer’ is ambiguous
  104 |     friend class ::nlohmann::json_pointer;
      |                              ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:166:26: error: reference to ‘json_pointer’ is ambiguous
  166 |     using json_pointer = ::nlohmann::json_pointer<StringType>;
      |                          ^~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:2327:21: error: missing template argument list after ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder not permitted in parameter  2327 |     ValueType value(const json_pointer& ptr, const ValueType& default_value) const
      |                     ^~~~~
      |                          <>
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’ declared here
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:2352:22: error: missing template argument list after ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder not permitted in parameter  2352 |     ReturnType value(const json_pointer& ptr, ValueType && default_value) const
      |                      ^~~~~
      |                           <>
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’ declared here
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:2376:27: error: reference to ‘json_pointer’ is ambiguous  2376 |     ValueType value(const ::nlohmann::json_pointer<BasicJsonType>& ptr, const ValueType& default_value) const
      |                           ^~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:2376:51: error: expected ‘,’ or ‘...’ before ‘<’ token  2376 |     ValueType value(const ::nlohmann::json_pointer<BasicJsonType>& ptr, const ValueType& default_value) const
      |                                                   ^
/usr/local/src/QGIS/external/nlohmann/json.hpp:2387:28: error: reference to ‘json_pointer’ is ambiguous  2387 |     ReturnType value(const ::nlohmann::json_pointer<BasicJsonType>& ptr, ValueType && default_value) const
      |                            ^~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:2387:52: error: expected ‘,’ or ‘...’ before ‘<’ token  2387 |     ReturnType value(const ::nlohmann::json_pointer<BasicJsonType>& ptr, ValueType && default_value) const
      |                                                    ^
/usr/local/src/QGIS/external/nlohmann/json.hpp:2745:19: error: missing template argument list after ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder not permitted in parameter
 2745 |     bool contains(const json_pointer& ptr) const
      |                   ^~~~~
      |                        <>
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’ declared here
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:2752:46: error: reference to ‘json_pointer’ is ambiguous  2752 |     bool contains(const typename ::nlohmann::json_pointer<BasicJsonType>& ptr) const
      | ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:2752:58: error: expected ‘,’ or ‘...’ before ‘<’ token  2752 |     bool contains(const typename ::nlohmann::json_pointer<BasicJsonType>& ptr) const
      | ^
/usr/local/src/QGIS/external/nlohmann/json.hpp:4618:26: error: missing template argument list after ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder not permitted in parameter
 4618 |     reference operator[](const json_pointer& ptr)
      |                          ^~~~~
      |                               <>
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’ declared here
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4618:15: error: ‘nlohmann::json_abi_v3_11_3::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>::value_type& nlohmann::json_abi_v3_11_3::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>::operator[](...)’ must not have variable number of arguments
 4618 |     reference operator[](const json_pointer& ptr)
      |               ^~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4625:32: error: reference to ‘json_pointer’ is ambiguous  4625 |     reference operator[](const ::nlohmann::json_pointer<BasicJsonType>& ptr)
      |                                ^~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4625:56: error: expected ‘,’ or ‘...’ before ‘<’ token  4625 |     reference operator[](const ::nlohmann::json_pointer<BasicJsonType>& ptr)
      |                                                        ^
/usr/local/src/QGIS/external/nlohmann/json.hpp:4632:32: error: missing template argument list after ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder not permitted in parameter
 4632 |     const_reference operator[](const json_pointer& ptr) const
      |                                ^~~~~
      |                                     <>
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’ declared here
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4632:21: error: ‘const nlohmann::json_abi_v3_11_3::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>::value_type& nlohmann::json_abi_v3_11_3::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType, CustomBaseClass>::operator[](...) const’ must not have variable number of arguments
 4632 |     const_reference operator[](const json_pointer& ptr) const
      |                     ^~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4639:38: error: reference to ‘json_pointer’ is ambiguous  4639 |     const_reference operator[](const ::nlohmann::json_pointer<BasicJsonType>& ptr) const
      |                                      ^~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4639:62: error: expected ‘,’ or ‘...’ before ‘<’ token  4639 |     const_reference operator[](const ::nlohmann::json_pointer<BasicJsonType>& ptr) const
|                                                              ^
/usr/local/src/QGIS/external/nlohmann/json.hpp:4646:18: error: missing template argument list after ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder not permitted in parameter
 4646 |     reference at(const json_pointer& ptr)
      |                  ^~~~~
      |                       <>
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’ declared here
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4653:24: error: reference to ‘json_pointer’ is ambiguous  4653 |     reference at(const ::nlohmann::json_pointer<BasicJsonType>& ptr)
      |                        ^~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4653:48: error: expected ‘,’ or ‘...’ before ‘<’ token  4653 |     reference at(const ::nlohmann::json_pointer<BasicJsonType>& ptr)
      |                                                ^
/usr/local/src/QGIS/external/nlohmann/json.hpp:4660:24: error: missing template argument list after ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder not permitted in parameter
 4660 |     const_reference at(const json_pointer& ptr) const
      |                        ^~~~~
      |                             <>
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’ declared here
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4667:30: error: reference to ‘json_pointer’ is ambiguous  4667 |     const_reference at(const ::nlohmann::json_pointer<BasicJsonType>& ptr) const
      |                              ^~
/usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7: note: candidates are: ‘template<class RefStringType> class nlohmann::json_abi_v3_11_3::json_pointer’
   35 | class json_pointer
      |       ^~~~~~~~~~~~
/usr/local/include/pdal/JsonFwd.hpp:45:7: note: ‘template<class BasicJsonType> class nlohmann::json_pointer’
   45 | class json_pointer;
      |       ^~~~~~~~~~~~
/usr/local/src/QGIS/external/nlohmann/json.hpp:4667:54: error: expected ‘,’ or ‘...’ before ‘<’ token  4667 |     const_reference at(const ::nlohmann::json_pointer<BasicJsonType>& ptr) const
      |                                                      ^


_______________________________________________
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
_______________________________________________
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

Reply via email to