Hi Stefanos,

Thanks for the suggestion, I will definitely try that. In any case it is baffling that build fails using both internal and external (3.12).

I currently suspect deeper issues in gcc and how libstdc++ is linked in my system or the may be the OS. Up to two weeks ago I could compile QGIS painlessly.

Hernán

Den 2025-04-29 kl. 10:18, skrev Stefanos Natsis:

Hi Hernan,

Nlohmann json got updated to 3.11.3 in https://github.com/qgis/QGIS/pull/61597 a few days ago, maybe you could try building master before that?

Best

Stefanos


On Tue, Apr 29, 2025, 10:04 AM Hernán De Angelis via QGIS-Developer <qgis-developer@lists.osgeo.org> 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