cmake_minimum_required(VERSION 3.5)

project(test VERSION 0.1 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON) ## qt auto call uic, moc, rcc compilers
set(CMAKE_AUTOUIC ON) # auto call uic compiler to process qt ui files.
set(CMAKE_AUTOMOC ON) # auto call moc compiler to process qt signal-slot source files.
set(CMAKE_AUTORCC ON) # auto call rcc complier to process qt resource files. ## find required libraries
# qt libs
find_package(Qt5 COMPONENTS Widgets REQUIRED)
# boost
find_package(Boost 1.65 REQUIRED COMPONENTS context thread)
# protobuf
find_package(Protobuf REQUIRED) ## common include directories
include_directories(
"${Protobuf_INCLUDE_DIR}"
"${Boost_INCLUDE_DIR}"
) ## common link directories
link_directories(
# "/usr/local/lib"
) ## header files
set(PROJECT_HEADERS
MainWindow.h
) ## source files
set(PROJECT_SOURCES
main.cpp
MainWindow.cpp
) ## qt ui files
set(PROJECT_QUIS
MainWindow.ui
) ## qt resource files
set(PROJECT_QRCS
icons.qrc
) ## build target
add_executable(test
${PROJECT_SOURCES}
${PROJECT_HEADERS}
${PROJECT_QUIS}
${PROJECT_QRCS}
) ## link required libraries
target_link_libraries(test PRIVATE
Qt5::Widgets
${Boost_LIBRARIES}
${Protobuf_LIBRARIES}
)

  基本模板如上,多个子项目的目录可以通过add_subdirectory添加即可,注意:

    1.如果想在Qt Creator中实现快捷键在头文件\源文件\ui文件之间跳转最好将它们放在同一个目录;

    2.Qt资源文件如图标这种需要放在单独的文件夹中,qrc文件本质就是个xml文件描述了资源文件的位置和分组;

    3.ui和qrc文件需要跟源文件一起作为编译目标的"原材料"

Qt5 CMake项目简单模板的更多相关文章

  1. 通过例子进阶学习C++(七)CMake项目通过模板库实现约瑟夫环

    本文是通过例子学习C++的第七篇,通过这个例子可以快速入门c++相关的语法. 1.问题描述 回顾一下约瑟夫环问题:n 个人围坐在一个圆桌周围,现在从第 s 个人开始报数,数到第 m 个人,让他出局:然 ...

  2. day 82 Vue学习二之vue结合项目简单使用、this指向问题

    Vue学习二之vue结合项目简单使用.this指向问题   本节目录 一 阶段性项目流程梳理 二 vue切换图片 三 vue中使用ajax 四 vue实现音乐播放器 五 vue的计算属性和监听器 六 ...

  3. day 81 Vue学习二之vue结合项目简单使用、this指向问题

    Vue学习二之vue结合项目简单使用.this指向问题   本节目录 一 阶段性项目流程梳理 二 vue切换图片 三 vue中使用ajax 四 vue实现音乐播放器 五 vue的计算属性和监听器 六 ...

  4. Visual Studio CMake 项目和 WSL

    Visual Studio CMake 项目和 WSL https://devblogs.microsoft.com/cppblog/c-with-visual-studio-2019-and-win ...

  5. 03 最小CMake项目

    03 最小CMake项目 所有CMake项目都从一个CMakeLists.txt文件开始,此文件应该放在源代码树的最顶层目录下.可以将CMakeLists.txt想象成CMake项目文件,定义了从源和 ...

  6. maven archetype生成自定义项目原型(模板)

    maven archetype可以将一个项目做成项目原型,之后只需要以此原型来创建项目,那么初始创建的项目便具有原型项目中的一切配置和代码.通俗讲就是一个项目模板. eclipse中那些快速生成mav ...

  7. 直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分

    直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分 本文是关于如何将GoogleTest和GoogleMock在没有预先编译安装在机器的情况下,直接在项目中作为项目的 ...

  8. 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)

    简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...

  9. helm-chart-2-chart结构和简单模板

    1, chart 结构介绍 我们创建一个chart 并查看其结构 右侧注释为其文件的的解释 $ helm create mychart $ cd mychart/ $ tree ├── charts ...

  10. vue-cli脚手架搭建项目简单入门一

    搭建系统: Windows系统 简单了解Node.js.npm,安装Node.js,下载网址:http://nodejs.cn/download/ 查看node,npm安装成功与否.打开cmd命令行, ...

随机推荐

  1. uniapp 微信小程序 实现左侧菜单右侧列表,双向联动的效果

    <template> <view class="u-wrap"> <view class="u-search-box"> & ...

  2. JavaScript:显式转换数据类型:如何转换为数值、字符串和布尔值类型?

    JS的运算符以及某些内置函数,会自动进行数据类型的转换,方便计算,即隐式转换数据类型: 但是很多时候,我们希望可以手动控制数据类型的转换,即显示转换数据类型: 转换为字符串 String()函数 使用 ...

  3. 【环境搭建】RocketMQ集群搭建

    前置条件及效果图 条件: 两台服务器,个人是两台腾讯云服务器(其中嫖的朋友一个): 版本: rocketmq-version:4.4.0 rocketmq-console(mq控制台) Java:1. ...

  4. Potree 002 Desktop开发环境搭建

    1.工程创建 我们使用Visual Studio 2022开发,把下载好后的PotreeDesktop源码添加到Visual Studio中. 打开Visual Studio 2022,新建Asp.N ...

  5. MySQL优化三,SQL语法

    ## 1.3.MySQL调优 前言:在前面的基础之上把相应的数据库表设计得很完美,建立了好用的索引,如果SQL语句中没有使用到相应索引的话,也是白搭,如何设计好一点的SQL,则是一大问题 ### 1. ...

  6. [cocos2d-x]关于定时器

    什么是定时器 定时器的作用就是每隔一段时间,就执行一段自定义的动作,比如飞机向前方移动,子弹的移动等等.该函数定义在CCNode头文件中,基本上cocos2dx中所有的东西都能够使用定时器. 定时器的 ...

  7. (14)go-micro微服务服务层Handle开发

    目录 一 Handle层开发功能说明 需要完成的服务开发功能: 从哪找需要开发的功能 二 代码编写 三 最后 一 Handle层开发功能说明 需要完成的服务开发功能: 登录 注册 查询用户信息 修改信 ...

  8. 这可能是Matplotlib和Seaborn最全的入门文档

    matplotlib是python第一个数据可视化库,在数据分析,可视化领域的地位和贡献是无法磨灭的.但也正是因为有了这位老大哥的出现给后续基于matplotlib实现的绘图库实现了可能. 而对于绘图 ...

  9. react,vue中的key有什么作用?(key的内部原理)

    1.虚拟DOM中的key的作用: key是虚拟dom对象的标识,当状态中的数据发生变化时,vue会根据新数据生成新的虚拟dom,随后vue进行新的虚拟dom与旧的虚拟dom的差异比较. 2.比较规则 ...

  10. 【项目实战】从零到一搭建Spring Boot整合Mybatis-plus

    前言 2023年想搭建一套属于自己的框架,做一个属于自己想法的项目.这些年工作中一直用公司已有的框架,以前有跟着学习视频搭建过,但自己真正动手搭建时发现问题还是很多,比如没有引入Mybatis-plu ...