cmake 指定头文件路径_使用CMake构建Qul项目

背景知识


qmake是Qt开发者们比较熟悉的工具,作为Qt5中使用的构建系统它存在不少缺陷和限制,因此在Qt for MCUs以及即将发布的Qt6中,将会使用cmake作为标准的第三方构建系统来构建Qt项目,Qt公司将继续在qmake上支持用户,但不会进一步开发它或使用它来构建Qt框架本身。

cmake 是 kitware 公司以及一些开源开发者在开发几个工具套件(VTK)过程中的衍生品,最终形成体系,成为一个独立的开放源代码项目。项目诞生于2001年。cmake的流行其实要归功于 KDE4 的开发(似乎跟当年的 svn 一样,KDE 将代码仓库从CVS迁移到SVN,同时证明了SVN管理大型项目的可用性) 。

cmake有着诸多优点,开发源代码/跨平台/能够管理大型项目/简单的工具链/高效构建以及可扩展性,它的编写需要熟悉“cmake语言和语法”。

推荐网上搜到一个比较不错的资料《CMake实践》,扫码即可获取。

9310ea4b9185705ae879c86ca0db3439.png

CMake的编写


CMake自动生成构建系统,例如makefile和Visual Studio工程文件。先来看Qt Creator默认生成的MCU工程的CMakeLists.txt文件:

cmake_minimum_required (VERSION 3.15)project(helloworld VERSION 0.0.1 LANGUAGES C CXX ASM)find_package(Qul)add_executable(helloworld)qul_target_qml_sources(helloworld helloworld.qml)target_link_libraries(helloworld Qul::QuickUltralite)app_target_setup_os(helloworld)app_target_default_main(helloworld helloworld)

CMakeLists.txt,这个文件是 cmake 的构建定义文件,文件名是大小写相关的,如果工程存在多个目录,需要确保每个要管理的目录都存在一个CMakeLists.txt。

cmake_minimum_required 定义了最小版本号

project(helloworld VERSION 0.0.1 LANGUAGES C CXX ASM)定义工程名称,并可指定工程支持的语言,支持的语言列表是可以忽略的,默认情况表示支持所有语言。

find_package(Qul)定义了Qt Quick Ultralite(简称Qul)附带的库和头文件

add_executable(helloworld)定义了这个工程会生成一个文件名为 helloworld 的可执行文件

qul_target_qml_sources(helloworld helloworld.qml)用来添加qml源文件,添加C++文件用法类似:qul_target_generate_interfaces(example example.h)

target_link_libraries(helloworld Qul::QuickUltralite)添加链接库,此命令自动添加适当的include目录、编译定义和库。

app_target_setup_os(helloworld)使用它可以根据OS变量的值,例如:

set(OS "BareMetal") 

set(OS "FreeRTOS ")

对OS进行额外的设置。这个命令链接正确的平台库并执行其他操作,比如编译和链接FreeRTOS源代码。

CMake的执行


CMakeLists.txt所在目录上运行cmake即可构建项目,例如,为STM32F769I-Discovery板构建:

cmake <source_directory> -DCMAKE_TOOLCHAIN_FILE=<qul_directory>/cmake/toolchain/armgcc.cmake -DQUL_PLATFORM=STM32F769I-DISCOVERY-baremetal

CMAKE_TOOLCHAIN_FILE变量用于切换到armgcc编译器工具链,QUL_PLATFORM变量决定要为哪个特定的板卡构建。

其他参考


还有很多其他命令的用法,具体可参考Qt官方文档:

https://doc.qt.io/QtForMCUs/qtul-cmake-reference.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值