提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|产品更新|编辑:鲍佳佳|2020-10-14 13:48:38.223|阅读 4721 次
概述:您可以在使用qmake或CMake构建Qt之间进行选择。通过-cmake配置以使用基于CMake的生成。对于最终版本,预计qmake构建系统将随着pass-cmake的需要而消失。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。赶快点击下载Qt最新试用版吧>>
【Qtitan组件集】
CMake:
用于构建Qt的CMake 3.18.4最近发布了!
使用配置或普通CMake
目前,qmake构建系统仍然存在。您可以在使用qmake或CMake构建Qt之间进行选择。通过-cmake配置以使用基于CMake的生成。
对于最终版本,预计qmake构建系统将随着pass-cmake的需要而消失。
例如,以下调用将Qt配置为安装到〜/ Qt / 6.0.0,并关闭对QLCDNumber窗口小部件的支持,并跳过qtsvg存储库:
configure -cmake -prefix /opt/Qt/6.0.0 -no-feature-lcdnumber -skip qtsvg
配置脚本将这些参数转换为以下CMake调用:
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/opt/Qt/6.0.0 -DFEATURE_lcdnumber=OFF -DBUILD_qtsvg=OFF /path/to/qt/sources
这是一个很详尽的说明,并说明了我们的configure脚本的有用性。
使用configure,我们可以在--参数之后将额外的参数传递给CMake 。上面的configure调用与此等效:
configure -cmake -prefix ~/Qt/6.0.0 -no-feature-lcdnumber -- -DBUILD_qttools=OFF
配置后,使用cmake --build .或ninja构建项目。
我们建议使用CMake的Ninja生成器。这也是配置的默认值。
可以通过传递-CMake generator
使用cmake --install .安装Qt。
交叉编译Qt
要使用CMake交叉编译项目,必须指定一个工具链文件。这个CMake语言文件为平台名称,使用的编译器/链接器以及其他许多特定于工具链的东西设置正确的值。
工具链文件的概念类似于qmake的mkspecs。
让我们看看如何在Linux上构建Qt的Android版本。
configure -cmake -prefix /opt/Qt/6.0.0-android \ -qt-host-path /opt/Qt/6.0.0 \ -xplatform android-clang \ -android-ndk ~/Android/android-sdk-tools/ndk-bundle \ -android-sdk ~/Android/android-sdk-tools \ -android-abis armeabi-v7a
最显著的区别是-qt主机路径选项。要交叉构建Qt,您需要指向主机平台已经存在的本机构版本这被称为主机Qt。
所有本地主机工具,如moc、rcc和uic都是从那里运行的。
在Qt5中,我们为每个交叉构建重新构建了宿主工具。从现有的主机Qt安装中重新使用主机工具可以避免我们反复为每个交叉构建构建构建主机工具,并大大简化了Qt的构建系统。
交叉编译Qt不会为目标平台生成宿主工具,除非将CMake变量Qt_build_tools_设置为ON。在嵌入式Linux环境中这样做很有用。
-xplatformandroid-clang参数只影响为这个交叉构建提供qmake支持而生成的相关文件。
android ndk参数指向ndk并选择位于其中的CMake工具链文件。
-android-sdk参数指向sdk。
android abis参数选择我们要构建的ABI。请注意,多ABI构建尚未实现。
为了将所有内容放在一起,上面的configure调用被转换为以下CMake调用:
cmake -DQT_HOST_PATH=/opt/Qt/6.0.0 \ -DQT_QMAKE_TARGET_MKSPEC=android-clang \ -DANDROID_SDK_ROOT=/home/jobor/Android/android-sdk-tools \ -DCMAKE_TOOLCHAIN_FILE=/home/jobor/Android/android-sdk-tools/ndk-bundle/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=armeabi-v7a \ -DCMAKE_INSTALL_PREFIX=/opt/Qt/6.0.0-android \ -G Ninja \ /path/to/qt/source
同样,用cmake --build .或进行构建ninja。
使用cmake --install .安装的Qt。
建立基于Qt的项目
一旦安装了Qt,就可以使用CMake或qmake来构建项目。
qmake一切照旧:
mkdir ~/my-project-build cd ~/my-project-build /opt/Qt/6.0.0/bin/qmake make
注意:这也适用于跨版本。那里,qmake是一个包装脚本,它使用生成的qt.conf调用主机Qt的qmake可执行文件,该文件设置正确的路径和mkspec。
Qt带有一个名为qt-cmake的包装脚本,可为CMake提供类似的体验:
mkdir ~/my-project-build cd ~/my-project-build /opt/Qt/6.0.0/bin/qt-cmake cmake --build .
qt-cmake使用CMAKE_TOOLCHAIN_FILE设置为Qt内部工具链文件的变量调用CMake,该文件设置正确的编译器并在交叉编译的情况下链式加载“实际”工具链文件。
注意:如果您发现需要链式加载其他工具链文件,请传递-DQT_CHAINLOAD_TOOLCHAIN_FILE=
QT-cmake的并没有设置CMake的生成。如果您始终要使用Ninja(我们建议使用),请将环境变量设置CMAKE_GENERATOR为Ninja。
构建Qt模块
qt-configure-module与已安装的Qt分开构建Qt模块时,它是首选工具。该qt-configure-module脚本采用与顶级Qt configure调用相同的参数-限于适用于我们当前正在配置的模块的参数。
在以下示例中,我们首先构建并安装qtbase,然后在关闭qml-network功能的情况下构建qtdeclarative。
mkdir ~/dev/qt/qtbase-build cd ~/dev/qt/qtbase-build ../qtbase/configure -prefix /opt/Qt/6.0.0 cmake --build . cmake --install . mkdir ~/dev/qt/qtdeclarative-build cd ~/dev/qt/qtdeclarative-build /opt/Qt/6.0.0/bin/qt-configure-module ../qtdeclarative -no-qml-network cmake --build . cmake --install .
构建独立的测试和示例
有两个好消息:
这是您构建和运行QProcess自动测试的方式:
mkdir ~/dev/qt/tst_qprocess cd ~/dev/qt/tst_qprocess /opt/Qt/6.0.0/bin/qt-cmake-standalone-test ../qtbase/tests/auto/corelib/io/qprocess cmake --build . ctest -V
这使用了CMake附带的ctest工具,但是您当然也可以直接运行可执行文件。
构建示例的方式类似:
mkdir ~/dev/qt/wiggly cd ~/dev/qt/wiggly /opt/Qt/6.0.0/bin/qt-cmake ../qtbase/examples/widgets/widgets/wiggly cmake --build . ./wiggly
我们希望您对CMake的转换尽可能顺利,并且Qt和CMake社区将彼此受益。
感谢您的阅读,希望这篇文章能带给你一定的帮助!如果这篇文章没能满足你的需求、点击获取更多文章教程!现在立刻下载Qt6免费试用吧!更多Qt类开发工具QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在线订购现直降1000元,欢迎咨询慧都获取更多优惠>>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:知名C/C++开发工具CLion全新发布v2024.3,新版本新语言引擎有显著改进等,欢迎下载新版体验!
强大的VS插件CodeRush已正式发布v24.2.3,新版本现在可以运行xUnit.Net v3测试等,欢迎下载最新版体验!
Spire.PDF 10.12.4 最新版本支持在进行多页打印时设置自动旋转方向。同时,一些已知问题也在本次更新中被成功修复,例如打印 PDF 文档时内容丢失的问题,欢迎下载体验~
日程安排控件dhtmlxScheduler v7.2全新发布,新版本增强并增加了编辑、修改等多个操作体验,欢迎下载最新版试用~
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢