xmake.lua 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. -- LearningSmartClient 主项目配置
  2. -- 使用 xmake includes 模式组织子模块
  3. -- 设置项目基本信息
  4. set_project("LearningSmartClient")
  5. set_version("1.0.0")
  6. set_languages("c++17")
  7. -- 设置编译模式
  8. add_rules("mode.debug", "mode.release")
  9. -- 全局编译选项
  10. if is_plat("windows") then
  11. add_cxflags("/W3", "/utf-8")
  12. add_defines("_CRT_SECURE_NO_WARNINGS", "NOMINMAX", "WIN32_LEAN_AND_MEAN")
  13. add_defines("_SILENCE_CLANG_COROUTINE_MESSAGE")
  14. set_runtimes("MD")
  15. else
  16. add_cxflags("-Wall", "-Wextra")
  17. end
  18. -- FFmpeg 全局配置
  19. local ffmpeg_path = os.getenv("FFMPEG_PATH") or "E:/AAA/ffmpeg-7.0.2-full_build-shared"
  20. local ffmpeg_include = ffmpeg_path .. "/include"
  21. local ffmpeg_lib = ffmpeg_path .. "/lib"
  22. -- 全局 FFmpeg 配置函数
  23. function add_ffmpeg_config()
  24. if is_plat("windows") then
  25. add_includedirs(ffmpeg_include)
  26. add_linkdirs(ffmpeg_lib)
  27. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  28. add_links("avdevice", "avfilter")
  29. end
  30. end
  31. -- 全局 Qt 配置函数(用于静态库)
  32. function add_qt_config()
  33. add_rules("qt.shared")
  34. add_frameworks("QtCore", "QtGui", "QtWidgets", "QtNetwork")
  35. add_frameworks("QtMultimedia", "QtWebSockets", "QtSvg", "QtXml")
  36. add_frameworks("QtOpenGL", "QtConcurrent")
  37. if is_plat("windows") then
  38. add_frameworks("QtWinExtras")
  39. end
  40. end
  41. -- 使用 includes 引入子模块配置 <mcreference link="https://xmake.io/zh/api/description/global-interfaces.html#includes" index="0">0</mcreference>
  42. -- 包含子模块配置
  43. includes("fmt")
  44. includes("qtpromise")
  45. includes("qwindowkit")
  46. includes("jsonserializer")
  47. includes("advanceddockingsystem")
  48. -- 核心功能模块
  49. -- includes("AV") -- 暂时不使用AV模块
  50. includes("AvRecorder")
  51. includes("AvPlayer2")
  52. includes("utils")
  53. -- 应用程序模块
  54. includes("api")
  55. includes("models")
  56. includes("network")
  57. includes("views")
  58. includes("widgets")
  59. -- 主应用程序目标
  60. target("LearningSmartClient")
  61. add_rules("qt.widgetapp")
  62. set_kind("binary")
  63. -- 设置输出目录
  64. set_targetdir("$(projectdir)/bin")
  65. if is_mode("debug") then
  66. set_targetdir("$(projectdir)/bin_debug")
  67. set_basename("LearningSmartClientd")
  68. end
  69. -- 主程序源文件
  70. add_files("main.cpp")
  71. add_files("mainwindow.cpp")
  72. add_files("MainPanel.cpp")
  73. add_files("appevent.cpp")
  74. add_files("thememanager.cpp")
  75. add_files("themesettingswidget.cpp")
  76. add_files("tlogger.cpp")
  77. -- 头文件
  78. add_headerfiles("mainwindow.h")
  79. add_headerfiles("MainPanel.h")
  80. add_headerfiles("appevent.h")
  81. add_headerfiles("thememanager.h")
  82. add_headerfiles("themesettingswidget.h")
  83. add_headerfiles("tlogger.h")
  84. -- Qt MOC 处理
  85. add_files("*.h", {rules = "qt.moc"})
  86. -- 资源文件
  87. add_files("resources/shared.qrc")
  88. -- 依赖的子模块
  89. -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") -- 暂时不使用AV模块
  90. add_deps("avrecorder_lib")
  91. add_deps("avplayer2_lib")
  92. add_deps("utils_lib")
  93. add_deps("api_lib")
  94. add_deps("models_lib")
  95. add_deps("network_lib")
  96. add_deps("views_lib")
  97. add_deps("widgets_lib")
  98. -- 第三方库依赖
  99. add_deps("fmt", "qtpromise", "qwindowkit", "jsonserializer", "advanceddockingsystem")
  100. -- Qt 配置
  101. add_qt_config()
  102. -- FFmpeg 配置
  103. add_ffmpeg_config()
  104. -- Windows 特定链接库
  105. if is_plat("windows") then
  106. add_syslinks("shell32", "user32", "gdi32", "ole32", "oleaut32")
  107. add_syslinks("winmm", "d3d11", "dwmapi", "windowsapp")
  108. add_syslinks("OpenGL32")
  109. end
  110. -- 包含目录
  111. add_includedirs(".")
  112. add_includedirs("thardware")
  113. target_end()
  114. ---- ScreenWall 独立应用程序
  115. --target("ScreenWall")
  116. -- add_rules("qt.widgetapp")
  117. -- set_kind("binary")
  118. -- -- 设置输出目录
  119. -- set_targetdir("$(projectdir)/bin")
  120. -- if is_mode("debug") then
  121. -- set_targetdir("$(projectdir)/bin_debug")
  122. -- set_basename("ScreenWalld")
  123. -- end
  124. -- -- ScreenWall 源文件
  125. -- add_files("ScreenWall/main.cpp")
  126. -- add_files("ScreenWall/screenwall_simple.cpp")
  127. -- add_files("ScreenWall/screenwall_widget.cpp")
  128. -- -- 头文件
  129. -- add_headerfiles("ScreenWall/screenwall_simple.h")
  130. -- add_headerfiles("ScreenWall/screenwall_widget.h")
  131. -- -- Qt MOC 处理
  132. -- add_files("ScreenWall/*.h", {rules = "qt.moc"})
  133. -- -- 依赖模块
  134. -- add_deps("avrecorder_lib")
  135. -- -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") -- 暂时不使用AV模块
  136. -- -- Qt 配置
  137. -- add_qt_config()
  138. -- -- FFmpeg 配置
  139. -- add_ffmpeg_config()
  140. -- -- Windows 特定链接库
  141. -- if is_plat("windows") then
  142. -- add_syslinks("shell32", "user32", "gdi32", "ole32", "oleaut32")
  143. -- add_syslinks("winmm", "d3d11", "dwmapi", "windowsapp")
  144. -- add_syslinks("OpenGL32")
  145. -- end
  146. --target_end()