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文件需要跟源文件一起作为编译目标的"原材料"

最新文章

  1. Win8 WinRT将替换Win32 API程序员何去何从?
  2. storyBoard配置错误导致崩溃 superview]: unrecognized selector...
  3. 【POJ】1062 昂贵的聘礼(spfa)
  4. 学通javaweb 24堂课 学习笔记
  5. 常用面试sql语句
  6. C语言-06复杂数据类型-01数组
  7. bzoj 2286 [Sdoi2011]消耗战 虚树+dp
  8. ATM取款~~
  9. Log4Net(一):快速入门
  10. 【Linux部署 · GIT】在linux系统安装git和配置实现SSH
  11. 论文笔记-Squeeze-and-Excitation Networks
  12. 详解zkw算法解决最小费用流问题
  13. C#连接oracle数据库步骤
  14. [HNOI2004]树的计数
  15. IDEA修改编辑背景图片
  16. C++ 数组和字符串
  17. Android 自定义弹出框带EditText
  18. JavaSE基础知识(3)—流程控制结构
  19. 【CF715E】Complete the Permutations(容斥,第一类斯特林数)
  20. LeetCode12.整数转罗马数字

热门文章

  1. python之实现文件的读写
  2. uniapp中封装一个弹框组件
  3. JavaScript:对象:如何复制一个对象?浅拷贝与深拷贝
  4. 周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1.18)
  5. 焦距的物理尺度、像素尺度之间的转换关系以及35mm等效焦距
  6. [WPF]项目整合Metro和MaterialDesignInXamlToolkit UI框架
  7. 从0到1手把手实现vite
  8. absolute定位后居中的方法
  9. SQL分类-DDL_操作数据库_创建&查询
  10. android开发技巧杂谈