• 一:构建环境
  • 二:目录结构
  • 三: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平台相关推荐

  1. 在 Ubuntu Linux 上从源代码构建 Qt 6.2.2的简短教程

    Qt 6.2.0 是 Qt 6 系列的第3个版本,功能与 Qt 5 相当,因此有望成为第一个被新 Qt 项目或从 Qt 5 移植的项目广泛采用的版本.在这篇文章中我提供有关在 Ubuntu Linux ...

  2. 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 ...

  3. [转](转载+整理)超详细的cmake教程

    cmake教程 参考 什么是cmake cmake 常见语法罗列 CMake可用变量 入门案例 单个源文件 多个源文件 同一目录,多个源文件 多个目录,多个源文件 进阶案例 自定义编译选项 指定安装和 ...

  4. 学习C++:C++进阶(三)CMake基础篇---用一个小型项目了解CMake及环境构建

    V1.1 于2022年7月15日第二次修改:添加了比较多的解释图,解读了各类库的CMakelist.txt文件 目录 第一部分 基础篇(Basics) 1.0 本部分主要学什么(Intro) 1.1 ...

  5. (转载+整理)超详细的cmake教程

    cmake教程 参考 什么是cmake cmake 常见语法罗列 CMake可用变量 入门案例 单个源文件 多个源文件 同一目录,多个源文件 多个目录,多个源文件 进阶案例 自定义编译选项 指定安装和 ...

  6. CMake教程Step7(安装打包)

    CMake官方文档 参考官方cmake3.24教程翻译.我这里使用cmake 3.16来演示例子. step7 https://cmake.org/cmake/help/v3.24/guide/tut ...

  7. cmake教程-入门篇

    从事linux的开发工作,不可避免的需要进行编译构建的工作,直接编辑Makefile,不仅需要熟悉Makefile的语法,还需要知道依赖和推导规则,比较麻烦.而cmake工具,只需要开发者提供头文件路 ...

  8. ubuntu18.04下--CMake教程

    CMake 教程 文章目录 CMake 教程 0. CMake安装及卸载 1. 创建简单的实例 2. CMake 重要参数 3. 构建项目结构 4. CMakeList.txt 模板 CMake是开源 ...

  9. Qt平台和编译器说明-Android

    Qt平台和编译器说明-Android 平台和编译器说明-Android Qt Creator中的Android开发 应用程序包 部署方式 使用Ministro进行部署 部署进行调试 插件和导入的特殊注 ...

最新文章

  1. 分享大厂分布式唯一ID设计方案,快来围观
  2. 创建一个QT for Android的传感器应用应用程序(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)
  3. 无法安装软件之解决其一 (windows installer服务篇)
  4. 解决 jQuery 实现填充父窗口iframe里元素的值的问题 如window.parent.document.getElementById().innerHTML...
  5. 在Github中创建项目并与本地关联
  6. Java数组学习笔记(遍历、排序、多维数组、命令行参数)
  7. python3 连接数据库~
  8. linux忘记root密码怎么修改密码和多台linux相互使用密钥连接
  9. mysql内存表主从复制_MySQL的内存表在主从同步的注意事项_MySQL
  10. 如何获得getElementById的length这个数值?
  11. lbe android,LBE安全大师极速版
  12. 单片机仿真软件Proteus8.0的安装及使用
  13. ubuntu12.04完美安装QQ2012、QQMusic、Foxmail等
  14. 一位计算机牛人的心得,谈计算机和数学
  15. QAM调制原理_广播百科 QAM
  16. 机器学习理论知识概述
  17. python图书管理实训报告总结_结对项目 —— 图书管理系统实验报告
  18. 抖音的计算机技术优势,抖音系统的四大优势是什么?
  19. win7蓝牙怎么连接_小米智能手环怎么连接手机蓝牙
  20. 最新解决谷歌翻译无法使用的教程

热门文章

  1. linux添加有效群组,linux基础命令--groupadd 创建新的群组
  2. quartus错误集锦(未完待续)
  3. 【赛纳斯】EC Raman电化学拉曼光谱检测系统推动科研新突破
  4. 烂泥行天下 php,烂泥:php5.6源码安装及php-fpm配置与nginx集成
  5. 【Plumed教程(一)】增强采样Plumed入门
  6. 美女主播即将失业?韩国首个AI女主播“金柱夏”诞生
  7. 狗子课堂 二 虚拟机配置
  8. 电阻应变片式测力传感器弹性体设计要求
  9. 使用CRM客户关系管理系统的好处有哪些?
  10. 编译原理——java 词法分析【有穷自动机实现】