xmake.lua 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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.static")
  34. add_frameworks("QtCore", "QtGui", "QtWidgets", "QtNetwork", "QtWebSockets")
  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. includes("libs")
  43. -- 应用程序模块
  44. includes("api")
  45. includes("network")
  46. includes("views")
  47. includes("widgets")
  48. -- 主应用程序目标
  49. target("LearningSmartClient")
  50. add_rules("qt.widgetapp")
  51. set_kind("binary")
  52. if is_plat("windows") then
  53. add_defines("UNICODE", "_UNICODE")
  54. end
  55. -- 设置输出目录
  56. set_targetdir("$(projectdir)/bin")
  57. if is_mode("debug") then
  58. set_targetdir("$(projectdir)/bin_debug")
  59. set_basename("LearningSmartClientd")
  60. end
  61. -- 主程序源文件
  62. add_files("main.cpp")
  63. add_files("mainwindow.cpp")
  64. add_files("MainPanel.cpp")
  65. add_files("appevent.cpp")
  66. add_files("thememanager.cpp")
  67. add_files("themesettingswidget.cpp")
  68. add_files("tlogger.cpp")
  69. -- 头文件
  70. add_headerfiles("mainwindow.h")
  71. add_headerfiles("MainPanel.h")
  72. add_headerfiles("appevent.h")
  73. add_headerfiles("thememanager.h")
  74. add_headerfiles("themesettingswidget.h")
  75. add_headerfiles("tlogger.h")
  76. -- Qt MOC 处理 - 只处理主项目的头文件
  77. add_files("mainwindow.h", {rules = "qt.moc"})
  78. add_files("MainPanel.h", {rules = "qt.moc"})
  79. add_files("appevent.h", {rules = "qt.moc"})
  80. add_files("thememanager.h", {rules = "qt.moc"})
  81. add_files("themesettingswidget.h", {rules = "qt.moc"})
  82. add_files("tlogger.h", {rules = "qt.moc"})
  83. -- 资源文件
  84. add_files("resources/shared.qrc")
  85. -- 依赖的子模块
  86. -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") -- 暂时不使用AV模块
  87. add_deps("avrecorder_lib")
  88. add_deps("avplayer2_lib")
  89. add_deps("utils_lib")
  90. add_deps("api_lib")
  91. add_deps("network_lib")
  92. add_deps("views_lib")
  93. add_deps("widgets_lib")
  94. -- 第三方库依赖
  95. add_deps("fmt", "qtpromise", "qwindowkit", "jsonserializer", "advanceddockingsystem")
  96. add_deps("qwindowkit_widgets")
  97. -- Qt 配置
  98. add_qt_config()
  99. -- FFmpeg 配置
  100. add_ffmpeg_config()
  101. -- Windows 特定链接库
  102. if is_plat("windows") then
  103. add_syslinks("shell32", "user32", "gdi32", "ole32", "oleaut32")
  104. add_syslinks("winmm", "d3d11", "dwmapi", "windowsapp")
  105. add_syslinks("OpenGL32")
  106. end
  107. -- 包含目录
  108. add_includedirs(".")
  109. add_includedirs("thardware")
  110. add_files("thardware/*.cpp")
  111. target_end()
  112. ---- ScreenWall 独立应用程序
  113. --target("ScreenWall")
  114. -- add_rules("qt.widgetapp")
  115. -- set_kind("binary")
  116. -- -- 设置输出目录
  117. -- set_targetdir("$(projectdir)/bin")
  118. -- if is_mode("debug") then
  119. -- set_targetdir("$(projectdir)/bin_debug")
  120. -- set_basename("ScreenWalld")
  121. -- end
  122. -- -- ScreenWall 源文件
  123. -- add_files("ScreenWall/main.cpp")
  124. -- add_files("ScreenWall/screenwall_simple.cpp")
  125. -- add_files("ScreenWall/screenwall_widget.cpp")
  126. -- -- 头文件
  127. -- add_headerfiles("ScreenWall/screenwall_simple.h")
  128. -- add_headerfiles("ScreenWall/screenwall_widget.h")
  129. -- -- Qt MOC 处理
  130. -- add_files("ScreenWall/*.h", {rules = "qt.moc"})
  131. -- -- 依赖模块
  132. -- add_deps("avrecorder_lib")
  133. -- -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") -- 暂时不使用AV模块
  134. -- -- Qt 配置
  135. -- add_qt_config()
  136. -- -- FFmpeg 配置
  137. -- add_ffmpeg_config()
  138. -- -- Windows 特定链接库
  139. -- if is_plat("windows") then
  140. -- add_syslinks("shell32", "user32", "gdi32", "ole32", "oleaut32")
  141. -- add_syslinks("winmm", "d3d11", "dwmapi", "windowsapp")
  142. -- add_syslinks("OpenGL32")
  143. -- end
  144. --target_end()