xmake.lua 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. -- AV 框架子模块配置
  2. -- 此文件被主项目通过 includes("AV") 引入
  3. -- 公共基础配置函数
  4. function add_av_common_config()
  5. add_includedirs(".", {public = true})
  6. add_includedirs("code", {public = true})
  7. end
  8. -- 基础库
  9. target("av_base")
  10. set_kind("static")
  11. if is_plat("windows") then
  12. add_defines("UNICODE", "_UNICODE")
  13. end
  14. add_files("code/base/*.cpp")
  15. add_headerfiles("code/base/*.h")
  16. add_av_common_config()
  17. -- FFmpeg配置
  18. add_ffmpeg_config()
  19. -- 平台特定设置
  20. if is_plat("windows") then
  21. add_syslinks("ws2_32", "winmm")
  22. else
  23. add_syslinks("pthread")
  24. end
  25. -- 编解码库
  26. target("av_codec")
  27. set_kind("static")
  28. if is_plat("windows") then
  29. add_defines("UNICODE", "_UNICODE")
  30. end
  31. add_files("code/codec/*.cpp")
  32. add_headerfiles("code/codec/*.h")
  33. add_av_common_config()
  34. add_deps("av_base")
  35. -- FFmpeg配置
  36. add_ffmpeg_config()
  37. -- 捕获库
  38. target("av_capture")
  39. set_kind("static")
  40. if is_plat("windows") then
  41. add_defines("UNICODE", "_UNICODE")
  42. end
  43. add_files("code/capture/*.cpp")
  44. add_headerfiles("code/capture/*.h")
  45. add_av_common_config()
  46. add_deps("av_base")
  47. -- FFmpeg配置
  48. add_ffmpeg_config()
  49. -- 混流库
  50. target("av_muxer")
  51. set_kind("static")
  52. if is_plat("windows") then
  53. add_defines("UNICODE", "_UNICODE")
  54. end
  55. add_files("code/muxer/*.cpp")
  56. add_headerfiles("code/muxer/*.h")
  57. add_av_common_config()
  58. add_deps("av_base")
  59. -- FFmpeg配置
  60. add_ffmpeg_config()
  61. -- 工具库
  62. target("av_utils")
  63. set_kind("static")
  64. if is_plat("windows") then
  65. add_defines("UNICODE", "_UNICODE")
  66. end
  67. add_files("code/utils/*.cpp")
  68. add_headerfiles("code/utils/*.h")
  69. add_av_common_config()
  70. add_deps("av_base")
  71. -- FFmpeg配置
  72. add_ffmpeg_config()
  73. -- 完整的AV框架库 - 主项目依赖的统一接口
  74. target("av_framework")
  75. set_kind("static")
  76. if is_plat("windows") then
  77. add_defines("UNICODE", "_UNICODE")
  78. end
  79. add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils")
  80. add_av_common_config()
  81. -- 导出所有子模块的接口
  82. add_headerfiles("code/**/*.h")
  83. -- 播放器库
  84. target("av_player")
  85. set_kind("static")
  86. if is_plat("windows") then
  87. add_defines("UNICODE", "_UNICODE")
  88. end
  89. add_files("code/player/*.cpp")
  90. add_headerfiles("code/player/*.h")
  91. add_av_common_config()
  92. add_deps("av_base", "av_codec")
  93. -- Qt 配置
  94. add_qt_config()
  95. -- FFmpeg配置
  96. add_ffmpeg_config()
  97. -- 录制器库
  98. target("av_recorder")
  99. set_kind("static")
  100. if is_plat("windows") then
  101. add_defines("UNICODE", "_UNICODE")
  102. end
  103. add_files("code/recorder/*.cpp")
  104. add_headerfiles("code/recorder/*.h")
  105. add_av_common_config()
  106. add_deps("av_base", "av_codec", "av_capture", "av_muxer")
  107. -- Qt 配置
  108. add_qt_config()
  109. -- FFmpeg配置
  110. add_ffmpeg_config()
  111. -- 基础测试程序
  112. target("test_basic")
  113. set_kind("binary")
  114. if is_plat("windows") then
  115. add_defines("UNICODE", "_UNICODE")
  116. end
  117. add_files("test_basic.cpp")
  118. add_deps("av_base")
  119. add_common_config()
  120. -- FFmpeg配置
  121. add_ffmpeg_config()
  122. -- 编解码测试程序
  123. target("test_codec")
  124. set_kind("binary")
  125. if is_plat("windows") then
  126. add_defines("UNICODE", "_UNICODE")
  127. end
  128. add_files("test_codec.cpp")
  129. add_deps("av_codec")
  130. add_common_config()
  131. -- FFmpeg配置
  132. add_ffmpeg_config()
  133. -- 解码器测试程序
  134. target("test_decoder")
  135. set_kind("binary")
  136. if is_plat("windows") then
  137. add_defines("UNICODE", "_UNICODE")
  138. end
  139. add_files("test_decoder.cpp")
  140. add_deps("av_codec")
  141. add_common_config()
  142. -- FFmpeg配置
  143. add_ffmpeg_config()
  144. -- 音频编码器测试程序
  145. target("test_audio_encoder")
  146. set_kind("binary")
  147. if is_plat("windows") then
  148. add_defines("UNICODE", "_UNICODE")
  149. end
  150. add_files("test_audio_encoder.cpp")
  151. add_deps("av_codec")
  152. add_common_config()
  153. -- FFmpeg配置
  154. add_ffmpeg_config()
  155. -- 窗口采集测试程序
  156. target("test_window_capture")
  157. set_kind("binary")
  158. if is_plat("windows") then
  159. add_defines("UNICODE", "_UNICODE")
  160. end
  161. add_files("test_window_capture.cpp")
  162. add_deps("av_capture")
  163. add_common_config()
  164. -- FFmpeg配置
  165. add_ffmpeg_config()
  166. -- 工具类测试程序
  167. target("test_utils")
  168. set_kind("binary")
  169. if is_plat("windows") then
  170. add_defines("UNICODE", "_UNICODE")
  171. end
  172. add_files("test_utils.cpp")
  173. add_deps("av_utils")
  174. add_common_config()
  175. -- FFmpeg配置
  176. add_ffmpeg_config()
  177. -- 混流器测试程序
  178. target("test_muxer")
  179. set_kind("binary")
  180. if is_plat("windows") then
  181. add_defines("UNICODE", "_UNICODE")
  182. end
  183. add_files("test_muxer.cpp")
  184. add_deps("av_muxer")
  185. add_common_config()
  186. -- FFmpeg配置
  187. add_ffmpeg_config()
  188. -- 音频调试测试程序
  189. target("test_audio_debug")
  190. set_kind("binary")
  191. if is_plat("windows") then
  192. add_defines("UNICODE", "_UNICODE")
  193. end
  194. add_files("test_audio_debug.cpp")
  195. add_deps("av_base", "av_codec", "av_utils")
  196. add_files("code/player/player_core_v2.cpp")
  197. add_files("code/player/audio_output.cpp")
  198. add_files("code/player/thread_manager.cpp")
  199. add_headerfiles("code/player/*.h")
  200. add_common_config()
  201. add_rules("qt.widgetapp")
  202. add_frameworks("QtCore", "QtWidgets", "QtMultimedia")
  203. -- FFmpeg配置
  204. add_ffmpeg_config()
  205. -- 带UI的播放器测试程序
  206. target("test_player_with_ui")
  207. add_rules("qt.widgetapp")
  208. if is_plat("windows") then
  209. add_defines("UNICODE", "_UNICODE")
  210. end
  211. add_common_config()
  212. add_files("test_player_with_ui.cpp", {rules = "qt.moc"})
  213. add_deps("av_base", "av_codec", "av_utils")
  214. add_files("code/player/*.cpp")
  215. add_headerfiles("code/player/*.h")
  216. add_files("code/player/*.h", {rules = "qt.moc"})
  217. add_frameworks("QtNetwork", "QtGui", "QtCore", "QtWidgets", "QtMultimedia", "QtOpenGL")
  218. -- FFmpeg配置
  219. add_ffmpeg_config()
  220. -- 混流器测试程序
  221. target("test_seek_pause_fixed")
  222. set_kind("binary")
  223. add_rules("qt.widgetapp")
  224. if is_plat("windows") then
  225. add_defines("UNICODE", "_UNICODE")
  226. end
  227. add_files("test_seek_pause_fixed.cpp")
  228. add_deps("av_base", "av_codec", "av_utils")
  229. add_common_config()
  230. add_frameworks("QtNetwork", "QtGui", "QtCore", "QtWidgets", "QtMultimedia", "QtOpenGL")
  231. -- FFmpeg配置
  232. add_ffmpeg_config()