Qt contrib .pc files not usable without forcing CXXFLAGS=`-I $CONTRIB_PREFIX/include`
The .pc files produced by the Qt contrib only have -I${includedir}/QtCore
(for qtcore, same for network and gui etc) in the Cflags
property, and not additionally -I${includedir}
. So, when the qt plugin is compiled using only the flags from the .pc files in the contrib, it fails like so:
FAILED: modules/vlc-qt-check.p/gui_qt_vlc-qt-check.cpp.o
c++ -Imodules/vlc-qt-check.p -Imodules -I../modules -I. -I.. -Iinclude -I../include -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtCore -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtGui -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtWidgets -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtSvg -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtQml -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtNetwork -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtQuick -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtQmlModels -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtQuickWidgets -I/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtQuickControls2 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++14 -g -DHAVE_CONFIG_H=1 -DQT_QUICKCONTROLS2_LIB -DQT_QUICKWIDGETS_LIB -DQT_QUICK_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -fPIC -MD -MQ modules/vlc-qt-check.p/gui_qt_vlc-qt-check.cpp.o -MF modules/vlc-qt-check.p/gui_qt_vlc-qt-check.cpp.o.d -o modules/vlc-qt-check.p/gui_qt_vlc-qt-check.cpp.o -c ../modules/gui/qt/vlc-qt-check.cpp
In file included from /home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtWidgets/QApplication:1,
from ../modules/gui/qt/vlc-qt-check.cpp:26:
/home/johannes/repos/vlc/contrib/x86_64-linux-gnu/include/QtWidgets/qapplication.h:43:10: fatal error: QtWidgets/qtwidgetsglobal.h: No such file or directory
43 | #include <QtWidgets/qtwidgetsglobal.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is uncovered by the WIP meson work (!475 (merged)) as it does not force add the contrib include dir to CXXFLAGS.
Now, one could argue that this is the fault of the meson MR, but looking at the official Ubuntu and Debian Qt packages, they also have two different include dirs: -I${includedir}
and -I${includedir}/QtCore
.