qmlAlembic icon indicating copy to clipboard operation
qmlAlembic copied to clipboard

Qt 5.14.1 support

Open mkielak opened this issue 4 years ago • 6 comments

Hi, I spent 2 days trying to use qmlAlembic with Qt 5.14.1 (also 5.13.1) and it doesn't work. I installed it with cmake, qmake (my own .pro file), even tried with copying all source to project and building all together - always same effect which look like this: Cannot assign to property of unknown type "" (Qt 5.14.1) Can not assign value of type "<unknown type>" to property "entity", expecting an object (Qt 5.13.1)

Error comes from QQmlPropertyValidator::validateObjectBinding(QQmlPropertyData*, QString const&, QV4::CompiledData::Binding const*) - qqmlpropertyvalidator.cpp inside qtdeclarative module.

It seems like some problem with reading plugin metadata. I tried to debug inside qt source but after my own compilation there were plenty of other problems. Did anyone face something similiar? Should qmlAlembic work with newer Qt Versions than 5.11?

mkielak avatar Apr 22 '20 15:04 mkielak

Yes, it works for me with qt-5.13.0 on linux and qt-5.14.1 on windows. What platform are you using?

fabiencastan avatar Apr 22 '20 15:04 fabiencastan

I working on Ubuntu 18.04 and Qt installed from offline installer.

mkielak avatar Apr 22 '20 15:04 mkielak

Difficult to help as I cannot reproduce it. Could you share your full log when using the provided cmake?

fabiencastan avatar Apr 22 '20 17:04 fabiencastan

There are some warnings but everything is building CMake output:

-- The CXX compiler identification is GNU 7.4.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at CMakeLists.txt:9 (cmake_policy):
  The OLD behavior for policy CMP0043 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


ILMBASE_ROOT is undefined
-- #define ILMBASE_VERSION_STRING "2.3.0"
-- ILMBASE INCLUDE PATH: /usr/local/include/OpenEXR
-- HALF LIB: /usr/local/lib/libHalf.so
-- IEX LIB: /usr/local/lib/libIex.so
-- IEXMATH LIB: /usr/local/lib/libIexMath.so
-- ILMTHREAD LIB: /usr/local/lib/libIlmThread.so
-- IMATH LIB: /usr/local/lib/libImath.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/build

Make output:

Scanning dependencies of target alembicEntityQmlPlugin_autogen
[ 12%] Automatic MOC for target alembicEntityQmlPlugin
[ 12%] Built target alembicEntityQmlPlugin_autogen
Scanning dependencies of target alembicEntityQmlPlugin
[ 25%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/alembicEntityQmlPlugin_autogen/mocs_compilation.cpp.o
[ 37%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/AlembicEntity.cpp.o
[ 50%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/BaseAlembicObject.cpp.o
[ 62%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/CameraLocatorEntity.cpp.o
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp: In constructor ‘abcentity::CameraLocatorEntity::CameraLocatorEntity(Qt3DCore::QNode*)’:
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:28:62: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
     auto vertexDataBuffer = new QBuffer(QBuffer::VertexBuffer);
                                                              ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
     QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
                            ^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:33:53: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
     positionAttribute->setDataType(QAttribute::Float);
                                                     ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
     QT_DEPRECATED void setDataType(VertexBaseType type);
                        ^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:34:37: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
     positionAttribute->setDataSize(3);
                                     ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
     QT_DEPRECATED void setDataSize(uint size);
                        ^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:48:61: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
     auto colorDataBuffer = new QBuffer(QBuffer::VertexBuffer);
                                                             ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
     QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
                            ^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:53:50: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
     colorAttribute->setDataType(QAttribute::Float);
                                                  ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
     QT_DEPRECATED void setDataType(VertexBaseType type);
                        ^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:54:34: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
     colorAttribute->setDataSize(3);
                                  ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
     QT_DEPRECATED void setDataSize(uint size);
                        ^~~~~~~~~~~
[ 75%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/IOThread.cpp.o
[ 87%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/PointCloudEntity.cpp.o
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp: In member function ‘void abcentity::PointCloudEntity::setData(const Alembic::Abc::v11::IObject&)’:
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:33:62: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
     auto vertexDataBuffer = new QBuffer(QBuffer::VertexBuffer);
                                                              ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
     QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
                            ^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:38:53: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
     positionAttribute->setDataType(QAttribute::Float);
                                                     ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
     QT_DEPRECATED void setDataType(VertexBaseType type);
                        ^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:39:37: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
     positionAttribute->setDataSize(3);
                                     ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
     QT_DEPRECATED void setDataSize(uint size);
                        ^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:48:61: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
     auto colorDataBuffer = new QBuffer(QBuffer::VertexBuffer);
                                                             ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
     QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
                            ^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:91:50: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
     colorAttribute->setDataType(QAttribute::Float);
                                                  ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
     QT_DEPRECATED void setDataType(VertexBaseType type);
                        ^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:92:34: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
     colorAttribute->setDataSize(3);
                                  ^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
                 from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
     QT_DEPRECATED void setDataSize(uint size);
                        ^~~~~~~~~~~
[100%] Linking CXX shared library libalembicEntityQmlPlugin.so
[100%] Built target alembicEntityQmlPlugin

mkielak avatar Apr 23 '20 08:04 mkielak

Does it work with a newer GCC version? Like 9.3?

EwoutH avatar May 01 '20 23:05 EwoutH

Compiled with 9.3.0 - same problem. I thought it might be connected with QGuiApplication which I use in main but changing to QApplication didn't take effect.

mkielak avatar May 04 '20 08:05 mkielak