TheImagingSource / tiscamera

The Linux SDK for The Imaging Source cameras.
https://www.theimagingsource.com
Apache License 2.0
300 stars 148 forks source link

Build will target Qt6 on Arch #488

Closed ShadeTechnik closed 2 years ago

ShadeTechnik commented 2 years ago

Trying to build this on Manjaro (Arch based) it always fails during make. The errors always point to Q....with a directory that goes into /usr/something/qt6. I noticed a Ubuntu dependency was Qt5, not Qt6 which on a standard Manjaro install both are present. I did manage to get it to build with cmake option -DTCAM_BUILD_TOOLS=OFF, but their is likely some issue in cmake because then it will not install the .so file that tcam-uvc-extension-loader is looking for.

With the help of a friend he he suggested I used -DQT_MAJOR_VERSION=5 as a cmake option but that did not work. What did work was editing tools/tcam-capture/CMakeLists.txt find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets MultiMediaWidgets Multimedia REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)

to

find_package(QT NAMES Qt5 COMPONENTS Widgets MultiMediaWidgets Multimedia REQUIRED) find_package(Qt5 COMPONENTS Widgets REQUIRED)

I'd be more specific but I didn't keep track of the actual outputs while I was doing this. Looks like it prefers Qt6 but doesn't actually work with Qt6

jasonKercher commented 2 years ago

Looks like issue for QT6 (for me anyway) is QRegExp in tools/tcam-capture/mainwindow.cpp. I believe this is not available in QT6 in favor of QRegularExpression.

TIS-Edgar commented 2 years ago

Hi,

Since Manjaro and similar are not on our list of supported distributions we did not yet check for compatibility with Qt6. That it is mentioned in the CMakeLists is a developer error.

You can use the cmake flag -DTCAM_BUILD_WITH_GUI to disable all gui/qt related things (only prevents tcam-capture at this moment). Since this affects more than QRegExp I can not yet provide a patch, but it is being worked on.

ShadeTechnik commented 2 years ago

Are you expecting compatibility with Qt6? If not why not just edit the file tools/tcam-capture/CMakeLists.txt as mentioned above until it is possible? I suspect the only reason this works on Debian11/Ubuntu is it possibly does not ship with Qt6 or the distributed .deb file is the typical installation method.

I don't really see the point of allowing a possible Qt6 target if it cannot work. Tcam-capture works fine if done as mentioned above.

TIS-Edgar commented 2 years ago

I like to have gradual upgrades in the code so that (potentially) breaking changes can be avoided. Qt6 compatibility will take longer than I thought. To prevent any problems with package generation, etc that might occur from qt6 linkage i have removed it for the time being (fd966b63).

If you have any other issues, please let us know.

Thank you.