首页 > 其他分享 >使用cmake组织QML工程代码

使用cmake组织QML工程代码

时间:2024-03-26 22:58:39浏览次数:25  
标签:Qt6 src cmake 代码 QML qml

使用cmake组织c++代码,一般的流程大概是:

        1、创建一个可执行文件A

        2、设置A需要的源文件

        3、设置A的编译源文件时用到的头文件路径

        4、设置A依赖的动态库或静态库

        5、设置编译选项

        6、设置链接选项

        7、设置编译宏定义

QML项目稍微多加了几个步骤:

       1、添加资源文件,主要是图片资源和qml文件资源

       2、把一些代码编译成模块,这样才能注册QML自定义类型。

下面以示例说明,我的QML项目的目录结构如下 :

cmake源文件如下:

        

#设置最低cmake版本
cmake_minimum_required(VERSION 3.20.1)  

#使用g++作为编译器
SET(CMAKE_CXX_COMPILER /usr/bin/c++)

#设置C++20标准
set(CMAKE_CXX_STANDARD 20)             

#创建工程
project(NetToolApp LANGUAGES CXX)      

#在widgets项目中,这句代码用来预处理.ui界面文件的,QML项目里好像用不到
set(CMAKE_AUTOMOC ON)                  

#查找用到的一些库 ,cmake中必须要先查找得到
find_package(Qt6 6.5 REQUIRED COMPONENTS Core Gui Qml Quick)         
if (Qt6_VERSION VERSION_GREATER_EQUAL 6.3)
    qt_standard_project_setup()
endif()

#创建一个可执行文件
qt_add_executable(${PROJECT_NAME} src/main.cpp)  


#添加资源文件,图像,qml代码文件都是资源,加了下面这行指令后,C++代码中就可以找到这些QML文件
#可以用qrc:/qml/App.mql的路径格式访问
qt_add_resources(${PROJECT_NAME}
    PREFIX "/"                            #资源的前缀
    FILES
        qml/App.qml                       #资源所在的路径
        qml/ConfigUI.qml
        qml/MapView.qml
        qml/GroupWnd.qml
        qml/MyComboBox.qml
        qml/ColorButton.qml
        qml/MessageListView.qml
        qml/TcpClient.qml
        qml/EditLine.qml
        qml/TaskTable.qml
        images/drop-indicator.png
)

#创建一个模块,主要是把C++类注册成QML可以使用的类型
qt6_add_qml_module(${PROJECT_NAME}
    URI "MyControl.TreeModel"
    VERSION 1.0
    SOURCES
        src/treemodel.h           #TreeView的自定义model代码
        src/treemodel.cpp
        src/nettoolitemmodel.h    #TreeView的自定义model代码(已废弃)
        src/nettoolitemmodel.cpp
)

#把当前路径设置为C++头文件搜索路径
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)

#添加项目依赖的库(动态库,静态库,Object或Interface库)
target_link_libraries(${PROJECT_NAME} PRIVATE
    Qt6::Core
    Qt6::Gui
    Qt6::Qml
    Qt6::Quick
)

代码连接(Qt 6.5):

https://download.csdn.net/download/qq_33271629/89037989

标签:Qt6,src,cmake,代码,QML,qml
From: https://blog.csdn.net/qq_33271629/article/details/137059644

相关文章

  • NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据|附代码数据
    全文链接:http://tecdat.cn/?p=2155最近我们被客户要求撰写关于NLP自然语言处理的研究报告,包括一些图形和统计输出。随着网民规模的不断扩大,互联网不仅是传统媒体和生活方式的补充,也是民意凸显的地带。领导干部参与网络问政的制度化正在成为一种发展趋势,这种趋势与互联网发展的时......
  • 如何在 Laravel 代码中正确地使用数据库事务
    如何在Laravel代码中正确地使用数据库事务22594英文原文 /  翻译 /  1852 /  4 / 创建于 2年前 /  1个改进 引言在web开发中,数据的完整性和准确性非常重要。因此,必须确保我们编写的代码能够以安全的方式存储、更新和删除数据库中的数据。在本文......
  • javascript基础代码练习
    一、输入新增病例数,累计确诊病例数,14天内聚集性疫情发生天数。新增或者累计确诊病例为0则该地区为低风险地区。新增大于0且累计确诊<50或者累计大于50且14天内聚集性疫情发生天数为0的地区为中风险地区。其他情况为高风险地区。<!DOCTYPEhtml><html><head>  <metachar......
  • 代码随想录算法训练营day35 | leetcode 860. 柠檬水找零、406. 根据身高重建队列、452
    目录题目链接:860.柠檬水找零-简单题目链接:406.根据身高重建队列-中等题目链接:452.用最少数量的箭引爆气球-中等题目链接:860.柠檬水找零-简单题目描述:在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一......
  • 代码随想录算法训练营第二十一天|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众
    文档链接:https://programmercarl.com/LeetCode530.二叉搜索树的最小绝对差题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in-bst/思路:二叉搜索树记得使用中序遍历最方便!注意是二叉搜索树,二叉搜索树可是有序的。遇到在二叉搜索树上求什么最值啊,差值之......
  • 代码随想录算法训练营第十七天|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之
    文档链接:https://programmercarl.com/LeetCode110.平衡二叉树题目链接:https://leetcode.cn/problems/balanced-binary-tree/思路:这里强调一波概念:二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数......
  • 大数据——添加行业代码
    importpandasaspd#读取数据df=pd.read_csv('new_result_05.csv')#行业分类与代码映射表industry_mapping={'农业':'A01','林业':'A02','畜牧业':'A03','采矿业':'B......
  • Blazor学习记录六_模版化组件_渲染模式_CSS隔离和代码隔离
    17.模版化组件在组件中放置一个可渲染的代码片段供外部调用者来传入要渲染的内容及渲染样式,这样的组件就叫做模版化的组件。一般是一个支持泛型的组件,目标为消费者封装重复使用的通用性良好的UI组件。比如一个用来给用户呈现表格数据的表格组件。示例组件GenaricTable.razor代......
  • iMessage群发之Java源代码功能实现
    iMessage群发软件作为一款内置的、深受用户喜爱的即时通讯工具,不仅为用户提供了高效、安全的通信方式,还允许用户通过群发功能一次性向多个联系人发送消息。Java作为一种广泛使用的编程语言,以其跨平台性、面向对象性、安全性等特点,在开发移动应用、服务器应用、Web应用等领域有着......
  • CMakeLists_find_package以及C++基本语法
    命令catkin_make等效于以下指令:cd~/catkin_wscdsrccatkin_init_workspacecd..mkdirbuildcdbuildcmake../src-DCMAKE_INSTALL_PREFIX=../install-DCATKIN_DEVEL_PREFIX=../devel命令cmake与makeinstall-DCMAKE_BUILD_TYPE=:releasedebug-DCMAK......