[go: up one dir, main page]

Menu

#83 Fail to build when mixing Qt6 and Qt5 libraries

v0.8.x
closed-fixed
None
5
2023-08-27
2023-07-23
No
Hello,
This version (and 0.8.8 fail to build with gcc 13 with the following error :
`
[1/1] Linking CXX executable src/vmpk
FAILED: src/vmpk
&& /usr/lib/ccache/c++ -g -O2 -ffile-prefix-map=/home/marillat/src/vmpk-0.8.9=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -O2 -g -DNDEBUG -Wl,-z,relro src/CMakeFiles/vmpk.dir/vmpk_autogen/mocs_compilation.cpp.o src/CMakeFiles/vmpk.dir/about.cpp.o src/CMakeFiles/vmpk.dir/colordialog.cpp.o src/CMakeFiles/vmpk.dir/colorwidget.cpp.o src/CMakeFiles/vmpk.dir/extracontrols.cpp.o src/CMakeFiles/vmpk.dir/instrument.cpp.o src/CMakeFiles/vmpk.dir/keyboardmap.cpp.o src/CMakeFiles/vmpk.dir/kmapdialog.cpp.o src/CMakeFiles/vmpk.dir/main.cpp.o src/CMakeFiles/vmpk.dir/midisetup.cpp.o src/CMakeFiles/vmpk.dir/preferences.cpp.o src/CMakeFiles/vmpk.dir/riff.cpp.o src/CMakeFiles/vmpk.dir/riffimportdlg.cpp.o src/CMakeFiles/vmpk.dir/shortcutdialog.cpp.o src/CMakeFiles/vmpk.dir/vpiano.cpp.o src/CMakeFiles/vmpk.dir/vpianosettings.cpp.o src/CMakeFiles/vmpk.dir/vmpk_adaptor.cpp.o src/CMakeFiles/vmpk.dir/vmpk_autogen/IJ3KGTTQ5V/qrc_vmpk.cpp.o -o src/vmpk /usr/lib/x86_64-linux-gnu/libdrumstick-widgets.so.2.8.0 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.10 /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.15.10 /usr/lib/x86_64-linux-gnu/libdrumstick-rt.so.2.8.0 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.10 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.10 && :
/usr/bin/ld: src/CMakeFiles/vmpk.dir/vpiano.cpp.o: in function VPiano::updateNoteNames(bool)': ./obj-x86_64-linux-gnu/./src/vpiano.cpp:1504:(.text+0x89bf): undefined reference todrumstick::widgets::PianoKeybd::useCustomNoteNames(QStringList const&)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed
`

Related

News: 2023/08/virtual-midi-piano-keyboard-0810-released

Discussion

  • Pedro Lopez-Cabanillas

    That function (PianoKeybd::useCustomNoteNames) belongs to Drumstick::Widgets since a long time ago. See: https://drumstick.sourceforge.io/docs/classdrumstick_1_1widgets_1_1PianoKeybd.html#ae0680db70e0f1f8b72d4ea71e722978f

    And src/CMakeLists.txt:176-183 links to Drumstick::Widgets among other libraries:

    target_link_libraries(vmpk PRIVATE
        Drumstick::RT
        Drumstick::Widgets
        Qt${QT_VERSION_MAJOR}::Widgets
        $<$<BOOL:${ENABLE_DBUS}>:Qt${QT_VERSION_MAJOR}::DBus>
        $<$<BOOL:${Qt5X11Extras_FOUND}>:Qt5::X11Extras>
        $<$<BOOL:${XCB_FOUND}>:${XCB_LIBRARIES}>
    )
    

    So, I can't see any bug or problem on Drumstick or VMPK.

    So, you may be right blaming GCC 13, which may be buggy. But anyway, Qt6 supported platforms only lists GCC 9, 10 and 11 at this moment: https://doc.qt.io/qt-6/linux.html

    I've just now built VMPK with GCC 12 with correct results right now, though. I will try newer compilers later.

     
  • Debian Package

    Debian Package - 2023-07-23

    I can't change gcc in Debian, as gcc 13 is the defaults.

     
  • Debian Package

    Debian Package - 2023-07-23

    vmpk is build with QT5
    A build with QT6 solve this issue

     
  • Debian Package

    Debian Package - 2023-07-23

    Yes, I already built drumstick with Qt6 hence this error.
    For packages dependencies, isn't a problem as I built at least one package under a chroot and I'll quickly see if a dependency is missing.

    Thanks got your work.

     
  • Pedro Lopez-Cabanillas

    I've just now built drumstick 2.8 and vmpk 0.8.9, both with Qt 5.15 and GCC 13.1.1 in Fedora 38. It produced a few warnings, but worked well.

    Screenshot

     

    Last edit: Pedro Lopez-Cabanillas 2023-07-23
  • Pedro Lopez-Cabanillas

    • summary: Fail to build with gcc 13 --> Fail to build when mixing Qt6 and Qt5 libraries
     
  • Pedro Lopez-Cabanillas

    So, the problem is that you have built Drumstick with Qt6, but then you tried to build VMPK with Qt5. This should be detected earlier at configure time, when running CMake, instead of producing an error at compile/link time.

    This looks like a common problem. For instance, in AUR (Arch Linux) kmetronome

    Drumstick 2.8.1 will have a check, with a specific error message: [drumstick:git:914aad]

     

    Related

    Commit: [914aad]

  • Pedro Lopez-Cabanillas

    • status: open --> pending-fixed
     
  • Pedro Lopez-Cabanillas

    • status: pending-fixed --> closed-fixed
     

Log in to post a comment.