其实在官网上有介绍到
Mouse
The mouse cursor shows up whenever QT_QPA_EGLFS_HIDECURSOR (for eglfs) or QT_QPA_FB_HIDECURSOR (for linuxfb) is not set and Qt's libudev-based device discovery reports that at least one mouse is available. When libudev support is not present, the mouse cursor always show up unless explicitly disabled via the environment variable.
Hot plugging is supported, but only if Qt was configured with libudev support (that is, if the libudev development headers are present in the sysroot at configure time). This allows connecting or disconnecting an input device while the application is running.
说是说的比较清楚了,在libudev被支持的情况下热插拔是支持的。同时也说了,在QT配置时,需要在sysroot下有libudev的头文件。
刚看完时没有看清楚这几句话,就在configure --help下去找libudev、udev,都没找到选项。然后就直接到QTSRCROOT下的configure里找,也没有。
找错了,就到QTSRCROOT/qtbase下的configure下找,还真有。
libudev)
1863 if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
1864 CFG_LIBUDEV="$VAL"
1865 else
1866 UNKNOWN_OPT=yes
1867 fi
1868 ;;
if [ "$CFG_LIBUDEV" != "no" ]; then
5377 if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists libudev 2>/dev/null; then
5378 QMAKE_INCDIR_LIBUDEV=`$PKG_CONFIG --cflags-only-I libudev 2>/dev/null | sed -e 's,^-I,,g' -e 's, -I, ,g'`
5379 QMAKE_LIBS_LIBUDEV=`$PKG_CONFIG --libs libudev 2>/dev/null`
5380 QMAKE_CFLAGS_LIBUDEV=`$PKG_CONFIG --cflags libudev 2>/dev/null`
5381 QMakeVar set QMAKE_INCDIR_LIBUDEV "$QMAKE_INCDIR_LIBUDEV"
5382 QMakeVar set QMAKE_LIBS_LIBUDEV "$QMAKE_LIBS_LIBUDEV"
5383 fi
5384 if compileTest unix/libudev "libudev" $QMAKE_CFLAGS_LIBUDEV $QMAKE_LIBS_LIBUDEV; then
5385 CFG_LIBUDEV=yes
5386 QT_CONFIG="$QT_CONFIG libudev"
5387 elif [ "$CFG_LIBUDEV" = "yes" ]; then
5388 echo "The libudev functionality test failed!"
5389 [ -z "$PKG_CONFIG" ] && echo " Use of pkg-config is not enabled, maybe you want to pass -pkg-config?"
5390 exit 1
5391 else
5392 CFG_LIBUDEV=no
5393 fi
5394 fi
......
没有配置项,就是直接自动检测的。于是查看配置输出
libudev auto-detection... ()
arm-linux-g++ -c -pipe -O2 -Wall -W -fPIC -I/home/ubuntu/app/qt-5.6.0/qtbase/config.tests/unix/libudev -I. -I/home/ubuntu/app/tslib/include -I/home/ubuntu/app/qt-5.6.0/qtbase/mkspecs/linux-arm-gnueabi-g++ -o libudev.o /home/app/qt-5.6.0/qtbase/config.tests/unix/libudev/libudev.cpp
/home/ubuntu/app/qt-5.6.0/qtbase/config.tests/unix/libudev/libudev.cpp:34:21: error: libudev.h: No such file or directory
/home/ubuntu/app/qt-5.6.0/qtbase/config.tests/unix/libudev/libudev.cpp: In function ‘int main()’:
/home/ubuntu/app/qt-5.6.0/qtbase/config.tests/unix/libudev/libudev.cpp:38: error: ‘udev’ was not declared in this scope
/home/ubuntu/app/qt-5.6.0/qtbase/config.tests/unix/libudev/libudev.cpp:38: error: ‘u’ was not declared in this scope
/home/ubuntu/app/qt-5.6.0/qtbase/config.tests/unix/libudev/libudev.cpp:38: error: ‘udev_new’ was not declared in this scope
/home/ubuntu/app/qt-5.6.0/qtbase/config.tests/unix/libudev/libudev.cpp:39: error: ‘udev_unref’ was not declared in this scope
make: *** [libudev.o] Error 1
libudev disabled.
需要libudev.h头文件。
-libinput -mtdev -evdev
得移植udev,然后最好把libinput(依赖于mtdev、Libudev、evdev、[Libwacom])也移植了
libwacom依赖于gudev,而我配置libinput是disable了gudev,所以要disable掉libwacom,但是:(这个libinput啊)
--enable-libwacom Use libwacom for tablet identification
(default=enabled)
默认是enable的,却只提供--enable,唉!
Libinput需要选择1.1.x,1.2.x使用的是99标准,gcc版本在4.6.0以下,static_assert是没有的,最后链接不过。