Hive
Hive copied to clipboard
Build failure with QT_NO_CAST_FROM_ASCII
Some platforms (newer Qt releases?) apparently define QT_NO_CAST_FROM_ASCII
by default.
This causes build failures since some calls to NodeTreeWidget::addTextItem()
currently depend on QVariant::QVariant(const char*)
being available.
Is this issue still present? I couldn't reproduce it (and have possibly fixed it the day before your ticket : 2ba09bb9651fe0f28f98b25a4d5261feb07092b2). If still present, which Qt version, which OS?
The issue persist. This is on ArchLinux with Qt 6.4.1. Qt 5 builds are fine.
Build output
[1/7] Building CXX object src/CMakeFiles/Hive_static.dir/nodeTreeWidget.cpp.o
FAILED: src/CMakeFiles/Hive_static.dir/nodeTreeWidget.cpp.o
/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DRESOURCES_ROOT_DIR=\"path/to/Hive/resources\" -DTARGET_SYSTEM_LINUX -DUSE_SPARKLE -Ipath/to/Hive/_build_linux_x64_ninja_debug/src/Hive_static_autogen/include -Ipath/to/Hive/include -Ipath/to/Hive/_build_linux_x64_ninja_debug/src -Ipath/to/Hive/src -Ipath/to/Hive/3rdparty/avdecc/include -Ipath/to/Hive/3rdparty/avdecc/externals/nih/include -Ipath/to/Hive/3rdparty/avdecc/externals/3rdparty/json/single_include -Ipath/to/Hive/_build_linux_x64_ninja_debug/3rdparty/discount/cmake -Ipath/to/Hive/3rdparty/sparkleHelper/include -isystem /usr/include/qt6/QtWidgets -isystem /usr/include/qt6 -isystem /usr/include/qt6/QtCore -isystem /usr/lib/qt6/mkspecs/linux-g++ -isystem /usr/include/qt6/QtGui -isystem /usr/include/qt6/QtNetwork -g -fPIC -DHive_static_STATICS -fvisibility=hidden -Wall -Werror -g -DDEBUG -W -Wno-unused-variable -Wno-unused-but-set-variable -Wno-ignored-qualifiers -Wno-sign-compare -Wno-unused-parameter -Wno-maybe-uninitialized -DHive_models_static_STATICS -DENABLE_AVDECC_FEATURE_REDUNDANCY -DENABLE_AVDECC_STRICT_2018_REDUNDANCY -DENABLE_AVDECC_FEATURE_JSON -DALLOW_RECV_BIG_AECP_PAYLOADS -Dla_networkInterfaceHelper_static_STATICS -DQtMate_static_STATICS -DHive_widget_models_static_STATICS -std=gnu++17 -MD -MT src/CMakeFiles/Hive_static.dir/nodeTreeWidget.cpp.o -MF src/CMakeFiles/Hive_static.dir/nodeTreeWidget.cpp.o.d -o src/CMakeFiles/Hive_static.dir/nodeTreeWidget.cpp.o -c path/to/Hive/src/nodeTreeWidget.cpp
path/to/Hive/src/nodeTreeWidget.cpp: In instantiation of 'void NodeTreeWidgetPrivate::addTextItem(QTreeWidgetItem*, QString, ValueType) [with ValueType = char*; <template-parameter-1-2> = void]':
path/to/Hive/src/nodeTreeWidget.cpp:992:16: required from 'QTreeWidgetItem* NodeTreeWidgetPrivate::createNameItem(const la::avdecc::controller::ControlledEntity*, bool, const NodeType&, hive::modelsLibrary::ControllerManager::AecpCommandType, la::avdecc::entity::model::ConfigurationIndex, la::avdecc::entity::model::DescriptorIndex, const std::any&) [with NodeType = la::avdecc::controller::model::ConfigurationNode; la::avdecc::entity::model::ConfigurationIndex = short unsigned int; la::avdecc::entity::model::DescriptorIndex = short unsigned int]'
path/to/Hive/src/nodeTreeWidget.cpp:373:17: required from here
path/to/Hive/src/nodeTreeWidget.cpp:1013:30: error: use of deleted function 'QVariant::QVariant(T) [with T = char*; typename std::enable_if<disjunction_v<std::is_pointer<_Tp>, std::is_member_pointer<_Tp> >, bool>::type <anonymous> = false]'
1013 | item->setData(1, Qt::DisplayRole, std::move(itemValue));
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/qt6/QtGui/qaction.h:13,
from /usr/include/qt6/QtWidgets/qwidget.h:11,
from /usr/include/qt6/QtWidgets/qframe.h:8,
from /usr/include/qt6/QtWidgets/qabstractscrollarea.h:8,
from /usr/include/qt6/QtWidgets/qabstractitemview.h:8,
from /usr/include/qt6/QtWidgets/qtreeview.h:8,
from /usr/include/qt6/QtWidgets/qtreewidget.h:7,
from /usr/include/qt6/QtWidgets/QTreeWidget:1,
from path/to/Hive/src/nodeTreeWidget.hpp:22,
from path/to/Hive/src/nodeTreeWidget.cpp:20:
/usr/include/qt6/QtCore/qvariant.h:199:5: note: declared here
199 | QVariant(T) = delete;
| ^~~~~~~~
ninja: build stopped: subcommand failed.
ok thanks for the heads up, I didn't merge the Qt6 branch yet, as it requires big sacrifices regarding minimum macOS version. I'll switch for Hive 2.0, hopefully next year. I manually added the QT define in my Qt5 build and didn't get any issue, so I guess I'll have to check Qt6 when possible then (my Qt6 macOS/windows version is fine but I'm on 6.2.4)