.pro 文件中的未知模块 - 无法构建包含 androidextras 模块的应用程序
Unknown module in .pro file - cannot build app with androidextras module included
我正在开发一些 Qt/QML 应用程序,它将部署到 Android OS。现在,我需要模块 androidextras
,但是如果我将 androidextras
放入我的 .pro
文件中,如下所示
QT += qml quick widgets sql core bluetooth printsupport androidextras
然后我重新运行 qmake
,我得到以下错误:
Project ERROR: Unknown module(s) in QT: androidextras
我还尝试打开并 运行 示例项目 Qt Notifier 但出现了同样的错误,因此我无法构建我的应用程序或示例,它们本应开箱即用。
我正在使用 KUbuntu 15.04
与 gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
编译器和 Desktop Qt 5.5.0 GCC 64bit
Qt 版本。如何构建此 androidextras
模块?
我已经安装了 Android arm v7
工具包,您可以从维护工具屏幕截图中看到:
我用 clear && ./configure -opensource -confirm-license -verbose -cups -plugin-sql-mysql -android-sdk /opt/android-sdk-linux -android-ndk /opt/android-ndk-r10d && make && make install
重新编译了整个 Qt,设置
QtCreator 中的 Qt 版本和 Qt Kit,更改了构建工具包,仍然弹出相同的错误。为什么?
Extras 模块旨在为特定平台提供特定 的附加功能,因此仅 在该平台上可用。它可能是对 iOS 应用程序上徽章编号的支持,对 Windows 跳转列表的支持或一些实用函数,用于将类型转换为相应的平台原生类型(例如 QPixmap
到CGImageRef
,再次出现在 Mac 额外内容中)。
存在四个附加模块 - Win, Mac/iOS, X11, Android - 只要你针对 specific 选择的平台针对 specific[=38= 进行编译】 套件,一切都很好。对于桌面环境,它也是自动的:您的主机始终是您的目标机器。
移动工具包用于从某个(桌面)主机交叉编译到另一个(移动)目标机器。在此设置中,您可以轻松地(并且错误地)使用错误的工具包编译特定于平台的代码。
一般来说,您应该将特定于平台的 modules/code 放在 条件 中,以确保它仅针对它们可用的特定套件进行编译。对于必须为桌面和移动平台或跨不同桌面平台编译的软件尤其如此。 .pro
文件中的条件可能如下所示:
android: QT += androidextras
mac: QT += macextras
// ...other platform specific and platform independent settings
有关 android .pro
示例文件,请参阅 ,其中还包括清单特定设置。
代码中应遵循相同的方法,即检查 OS 并有条件地编译平台代码。例如,一个函数的多平台实现可能如下所示:
if defined(Q_OS_ANDROID)
#include <QtAndroid>
#include <QAndroidJniObject>
#endif
// other code...
void YourClass::function()
{
#if defined(Q_OS_ANDROID)
// platform code
#elif defined(Q_OS_WIN)
#endif
}
例如 for a complete Android example or 一些有用的 iOS 特定关键字。
我正在开发一些 Qt/QML 应用程序,它将部署到 Android OS。现在,我需要模块 androidextras
,但是如果我将 androidextras
放入我的 .pro
文件中,如下所示
QT += qml quick widgets sql core bluetooth printsupport androidextras
然后我重新运行 qmake
,我得到以下错误:
Project ERROR: Unknown module(s) in QT: androidextras
我还尝试打开并 运行 示例项目 Qt Notifier 但出现了同样的错误,因此我无法构建我的应用程序或示例,它们本应开箱即用。
我正在使用 KUbuntu 15.04
与 gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
编译器和 Desktop Qt 5.5.0 GCC 64bit
Qt 版本。如何构建此 androidextras
模块?
我已经安装了 Android arm v7
工具包,您可以从维护工具屏幕截图中看到:
我用 clear && ./configure -opensource -confirm-license -verbose -cups -plugin-sql-mysql -android-sdk /opt/android-sdk-linux -android-ndk /opt/android-ndk-r10d && make && make install
重新编译了整个 Qt,设置
QtCreator 中的 Qt 版本和 Qt Kit,更改了构建工具包,仍然弹出相同的错误。为什么?
Extras 模块旨在为特定平台提供特定 的附加功能,因此仅 在该平台上可用。它可能是对 iOS 应用程序上徽章编号的支持,对 Windows 跳转列表的支持或一些实用函数,用于将类型转换为相应的平台原生类型(例如 QPixmap
到CGImageRef
,再次出现在 Mac 额外内容中)。
存在四个附加模块 - Win, Mac/iOS, X11, Android - 只要你针对 specific 选择的平台针对 specific[=38= 进行编译】 套件,一切都很好。对于桌面环境,它也是自动的:您的主机始终是您的目标机器。
移动工具包用于从某个(桌面)主机交叉编译到另一个(移动)目标机器。在此设置中,您可以轻松地(并且错误地)使用错误的工具包编译特定于平台的代码。
一般来说,您应该将特定于平台的 modules/code 放在 条件 中,以确保它仅针对它们可用的特定套件进行编译。对于必须为桌面和移动平台或跨不同桌面平台编译的软件尤其如此。 .pro
文件中的条件可能如下所示:
android: QT += androidextras
mac: QT += macextras
// ...other platform specific and platform independent settings
有关 android .pro
示例文件,请参阅
代码中应遵循相同的方法,即检查 OS 并有条件地编译平台代码。例如,一个函数的多平台实现可能如下所示:
if defined(Q_OS_ANDROID)
#include <QtAndroid>
#include <QAndroidJniObject>
#endif
// other code...
void YourClass::function()
{
#if defined(Q_OS_ANDROID)
// platform code
#elif defined(Q_OS_WIN)
#endif
}
例如