1. 安装Qt5

2.项目src目录如下

以Q提供的example piechartcustomization 为例子

文件如下:

  1. brushtool.cpp
  2. brushtool.h
  3. customslice.cpp
  4. customslice.h
  5. main.cpp
  6. mainwidget.cpp
  7. mainwidget.h
  8. pentool.cpp
  9. pentool.h
  10. piechartcustomization.pro
  11. piechartcustomization.pro.user

注:不需要最后两个文件 piechartcustomization.pro piechartcustomization.pro.user。 将其他文件拷贝到cmake项目中

3.编写CMakeLists.txt

  1. cmake_minimum_required(VERSION 3.21.1)
  2. project(piechartcustomization)
  3. # 将 CMake 缓存中的 Qt5_DIR 设置为 Qt5Config.cmake 文件的位置
  4. set(Qt5_DIR "C:/MySoftware/ProgramTools/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5")
  5. message("project=${PROJECT_NAME}")
  6. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  7. # 是否为 Qt 目标自动处理 uic
  8. set(CMAKE_AUTOUIC ON)
  9. # 目标属性控制cmake是否检查目标中的C++文件以确定它们
  10. # 是否需要运行moc,并创建规则以在适当的时间执行moc
  11. set(CMAKE_AUTOMOC ON)
  12. # AUTORCC目标属性控制cmake是否创建规则以在适当的时间对后缀为.qrc的源文件执行rcc
  13. set(CMAKE_AUTORCC ON)
  14. # 指定 C++ 版本有两种方法
  15. set(CMAKE_CXX_STANDARD 11)
  16. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  17. find_package(Qt5 COMPONENTS charts widgets core gui REQUIRED)
  18. set(qui_SOURCES
  19. main.cpp
  20. brushtool.cpp
  21. customslice.cpp
  22. mainwidget.cpp
  23. pentool.cpp
  24. )
  25. SET(qui_HEADERS
  26. brushtool.h
  27. customslice.h
  28. mainwidget.h
  29. pentool.h
  30. )
  31. SET(qui_FORMS
  32. )
  33. SET(qui_RESOURCES
  34. )
  35. # 调用预编译器moc,需要使用 QT5_WRAP_CPP宏
  36. qt_wrap_cpp(qui_HEADERS_MOC, $(qui_HEADERS))
  37. # 使用uic处理 .ui 文件
  38. QT5_WRAP_UI(qui_FORMS_HEADERS, $(qui_FORMS))
  39. # 使用rcc处理 .qrc 文件
  40. #QT5_ADD_RESOURCES(qui_RESOURCES_RCC $(qui_RESOURCES))
  41. # 这些生成的中间文件都会在build目录下,这样的话,编译器则不能定位由uic程序
  42. # 产生的_ui_mainwindows.h等文件. 所以, 我们需要把build目录添加到包含目录中
  43. include_directories(${CMAKE_CURRENT_BINARY_DIR})
  44. # 生成可执行文件
  45. add_executable(${PROJECT_NAME}
  46. ${qui_SOURCES}
  47. ${qui_HEADERS_MOC}
  48. ${qui_FORMS_HEADERS}
  49. ${qui_RESOURCES_RCC}
  50. )
  51. # 为target添加需要链接的共享库 两种写法,下面的是Qt5.15开始的
  52. target_link_libraries(${PROJECT_NAME}
  53. ${Qt5Widgets_LIBRARIES}
  54. Qt5::Core
  55. Qt5::Gui
  56. Qt5::Charts
  57. )
  58. install(TARGETS ${PROJECT_NAME}
  59. RUNTIME DESTINATION lib
  60. LIBRARY DESTINATION lib
  61. ARCHIVE DESTINATION lib
  62. )

4.使用cmake编译

参考资料 https://blog.csdn.net/qq_34347375/article/details/86530526