CMake教程之构建Qt平台
- 一:构建环境
- 二:目录结构
- 三:CMakeLists文件说明
- 四:测试
一:构建环境
关于Qt环境下的项目,这里也使用了cmake进行构建,这样可以减少对工程文件的依赖,同时可以做到跨平台的使用。
目前使用的平台是:CMake3.16.4 + VS2015。
二:目录结构
国际惯例,直接上工程目录结构:
根目录:
source目录:、
三:CMakeLists文件说明
同样的我们看一下根目录的写法:
cmake_minimum_required(VERSION 3.5.1)project("EQt")
message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}")#设置对c++11的支持
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")# 设置第三方头文件
set(include_third ${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/include/)
include_directories(SYSTEM ${include_third})# 设置第三方库路径
set(lib_boost ${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/libs/widows/boost)
set(lib_opencv ${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/libs/widows/opencv)
set(lib_tbb ${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/libs/widows/tbb)
link_directories(${lib_boost} ${lib_opencv} ${lib_tbb})# 配置Qt
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# 打开全局moc,目标关联的.h,.cpp
set(CMAKE_AUTOMOC ON)
# 打开全局uic,目标关联的.ui
set(CMAKE_AUTOUIC ON)
# 打开全局rcc,用于编译资源文件
set(CMAKE_AUTORCC ON)
# 查找Qt库文件
find_package( Qt5 REQUIRED COMPONENTS Widgets Core Gui Qml
)
include_directories(${Qt5Widgets_INCLUDE_DIRS}${CMAKE_CURRENT_BINARY_DIR}${QT_USE_FILE}Qt5::Qml
)
add_definitions(${QT_DEFINITIONS})add_subdirectory("source")
目前没有做平台化区分,当前的CMakeLists.txt中未对linux平台进行配置。后续在平台移植下会进行补充和修改。
source下的仅仅是对当前目录文件的包含,所以不做过多说明。目前widget中是对qt项目的运用,所以直接看widget下的CMakeLists.txt:
project(widget)FILE(GLOB_RECURSE HEAD*.h
)FILE(GLOB_RECURSE SOURCE *.cpp*.ui
)
FILE(GLOB_RECURSE QRC*.qrc
)
FILE(GLOB_RECURSE RES*.*
)
source_group(widget FILES ${HEAD} ${SOURCE} ${QRC} ${RES}) add_library(${PROJECT_NAME} STATIC ${SOURCE_TREE} ${HEAD} ${SOURCE} ${QRC} ${RES})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})#设置头文件搜索目录
include_directories(${CMAKE_SOURCE_DIR}/source/widget
)
四:测试
根据上一篇的配置,进行vs工程的配置和构建,最后生成vs工程项目目录如下:
对widget项目进行编译即可,因为widget是静态库项目,所以可以看到生成的widget.lib库即可。
CMake教程之构建Qt平台相关推荐
- 在 Ubuntu Linux 上从源代码构建 Qt 6.2.2的简短教程
Qt 6.2.0 是 Qt 6 系列的第3个版本,功能与 Qt 5 相当,因此有望成为第一个被新 Qt 项目或从 Qt 5 移植的项目广泛采用的版本.在这篇文章中我提供有关在 Ubuntu Linux ...
- Linux使用cmake编译项目,如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)...
如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake) 我使用的是ubuntu 14.04,cmake 2.8.12.2 ...
- [转](转载+整理)超详细的cmake教程
cmake教程 参考 什么是cmake cmake 常见语法罗列 CMake可用变量 入门案例 单个源文件 多个源文件 同一目录,多个源文件 多个目录,多个源文件 进阶案例 自定义编译选项 指定安装和 ...
- 学习C++:C++进阶(三)CMake基础篇---用一个小型项目了解CMake及环境构建
V1.1 于2022年7月15日第二次修改:添加了比较多的解释图,解读了各类库的CMakelist.txt文件 目录 第一部分 基础篇(Basics) 1.0 本部分主要学什么(Intro) 1.1 ...
- (转载+整理)超详细的cmake教程
cmake教程 参考 什么是cmake cmake 常见语法罗列 CMake可用变量 入门案例 单个源文件 多个源文件 同一目录,多个源文件 多个目录,多个源文件 进阶案例 自定义编译选项 指定安装和 ...
- CMake教程Step7(安装打包)
CMake官方文档 参考官方cmake3.24教程翻译.我这里使用cmake 3.16来演示例子. step7 https://cmake.org/cmake/help/v3.24/guide/tut ...
- cmake教程-入门篇
从事linux的开发工作,不可避免的需要进行编译构建的工作,直接编辑Makefile,不仅需要熟悉Makefile的语法,还需要知道依赖和推导规则,比较麻烦.而cmake工具,只需要开发者提供头文件路 ...
- ubuntu18.04下--CMake教程
CMake 教程 文章目录 CMake 教程 0. CMake安装及卸载 1. 创建简单的实例 2. CMake 重要参数 3. 构建项目结构 4. CMakeList.txt 模板 CMake是开源 ...
- Qt平台和编译器说明-Android
Qt平台和编译器说明-Android 平台和编译器说明-Android Qt Creator中的Android开发 应用程序包 部署方式 使用Ministro进行部署 部署进行调试 插件和导入的特殊注 ...
最新文章
- 分享大厂分布式唯一ID设计方案,快来围观
- 创建一个QT for Android的传感器应用应用程序(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)
- 无法安装软件之解决其一 (windows installer服务篇)
- 解决 jQuery 实现填充父窗口iframe里元素的值的问题 如window.parent.document.getElementById().innerHTML...
- 在Github中创建项目并与本地关联
- Java数组学习笔记(遍历、排序、多维数组、命令行参数)
- python3 连接数据库~
- linux忘记root密码怎么修改密码和多台linux相互使用密钥连接
- mysql内存表主从复制_MySQL的内存表在主从同步的注意事项_MySQL
- 如何获得getElementById的length这个数值?
- lbe android,LBE安全大师极速版
- 单片机仿真软件Proteus8.0的安装及使用
- ubuntu12.04完美安装QQ2012、QQMusic、Foxmail等
- 一位计算机牛人的心得,谈计算机和数学
- QAM调制原理_广播百科 QAM
- 机器学习理论知识概述
- python图书管理实训报告总结_结对项目 —— 图书管理系统实验报告
- 抖音的计算机技术优势,抖音系统的四大优势是什么?
- win7蓝牙怎么连接_小米智能手环怎么连接手机蓝牙
- 最新解决谷歌翻译无法使用的教程
热门文章
- linux添加有效群组,linux基础命令--groupadd 创建新的群组
- quartus错误集锦(未完待续)
- 【赛纳斯】EC Raman电化学拉曼光谱检测系统推动科研新突破
- 烂泥行天下 php,烂泥:php5.6源码安装及php-fpm配置与nginx集成
- 【Plumed教程(一)】增强采样Plumed入门
- 美女主播即将失业?韩国首个AI女主播“金柱夏”诞生
- 狗子课堂 二 虚拟机配置
- 电阻应变片式测力传感器弹性体设计要求
- 使用CRM客户关系管理系统的好处有哪些?
- 编译原理——java 词法分析【有穷自动机实现】