Hive icon indicating copy to clipboard operation
Hive copied to clipboard

Build failure with QT_NO_CAST_FROM_ASCII

Open Florob opened this issue 2 years ago • 3 comments

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.

Florob avatar Oct 15 '22 21:10 Florob

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?

christophe-calmejane avatar Dec 16 '22 11:12 christophe-calmejane

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.

Florob avatar Dec 16 '22 14:12 Florob

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)

christophe-calmejane avatar Dec 16 '22 14:12 christophe-calmejane