xmake.lua 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. -- xmake.lua for AV Framework
  2. -- 设置项目信息
  3. set_project("AV_Framework")
  4. set_version("1.0.0")
  5. set_languages("c++17")
  6. -- 设置编译模式
  7. add_rules("mode.debug", "mode.release")
  8. -- 设置编译选项
  9. if is_plat("windows") then
  10. add_cxflags("/W3", "/utf-8")
  11. add_defines("_CRT_SECURE_NO_WARNINGS")
  12. else
  13. add_cxflags("-Wall", "-Wextra")
  14. end
  15. -- 添加包依赖
  16. -- add_requires("ffmpeg") -- 注释掉,使用本地FFmpeg库
  17. -- 基础库
  18. target("av_base")
  19. set_kind("static")
  20. add_files("code/base/*.cpp")
  21. add_headerfiles("code/base/*.h")
  22. add_includedirs(".", {public = true})
  23. -- Windows特定设置
  24. if is_plat("windows") then
  25. add_syslinks("ws2_32", "winmm")
  26. -- FFmpeg库链接
  27. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  28. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  29. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  30. add_links("avdevice", "avfilter", "postproc")
  31. else
  32. add_syslinks("pthread")
  33. end
  34. -- 编解码库
  35. target("av_codec")
  36. set_kind("static")
  37. add_files("code/codec/*.cpp")
  38. add_headerfiles("code/codec/*.h")
  39. add_includedirs(".", {public = true})
  40. add_deps("av_base")
  41. -- FFmpeg库链接
  42. if is_plat("windows") then
  43. -- Windows下的FFmpeg库路径
  44. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  45. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  46. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  47. add_links("avdevice", "avfilter", "postproc")
  48. else
  49. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  50. end
  51. -- -- 捕获库
  52. target("av_capture")
  53. set_kind("static")
  54. add_files("code/capture/*.cpp")
  55. add_headerfiles("code/capture/*.h")
  56. add_includedirs(".", {public = true})
  57. add_deps("av_base")
  58. -- FFmpeg库链接
  59. if is_plat("windows") then
  60. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  61. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  62. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  63. add_links("avdevice", "avfilter", "postproc")
  64. end
  65. -- 混流库
  66. target("av_muxer")
  67. set_kind("static")
  68. add_files("code/muxer/*.cpp")
  69. add_headerfiles("code/muxer/*.h")
  70. add_includedirs(".", {public = true})
  71. add_deps("av_base")
  72. -- FFmpeg库链接
  73. if is_plat("windows") then
  74. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  75. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  76. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  77. add_links("avdevice", "avfilter", "postproc")
  78. end
  79. -- 工具库
  80. target("av_utils")
  81. set_kind("static")
  82. add_files("code/utils/*.cpp")
  83. add_headerfiles("code/utils/*.h")
  84. add_includedirs(".", {public = true})
  85. add_deps("av_base")
  86. -- FFmpeg库链接
  87. if is_plat("windows") then
  88. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  89. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  90. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  91. add_links("avdevice", "avfilter", "postproc")
  92. end
  93. -- -- 完整的AV框架库
  94. -- target("av_framework")
  95. -- set_kind("static")
  96. -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils")
  97. -- add_includedirs(".", {public = true})
  98. target("player")
  99. set_kind("binary")
  100. add_rules("qt.static")
  101. set_runtimes("MT")
  102. add_files("integration_example.cpp", {rules = "qt.moc"})
  103. add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils")
  104. add_includedirs(".", {public = true})
  105. add_files("code/player/*.cpp", {rules = "qt.moc"})
  106. add_headerfiles("code/player/*.h", {rules = "qt.moc"})
  107. add_frameworks("QtNetwork", "QtGui", "QtCore", "QtWidgets", "QtMultimedia")
  108. -- FFmpeg库链接
  109. if is_plat("windows") then
  110. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  111. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  112. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  113. add_links("avdevice", "avfilter", "postproc")
  114. end
  115. -- 基础测试程序
  116. target("test_basic")
  117. set_kind("binary")
  118. add_files("test_basic.cpp")
  119. add_deps("av_base")
  120. set_targetdir("$(buildir)/bin")
  121. -- FFmpeg库链接
  122. if is_plat("windows") then
  123. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  124. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  125. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  126. add_links("avdevice", "avfilter", "postproc")
  127. end
  128. -- 编解码测试程序
  129. target("test_codec")
  130. set_kind("binary")
  131. add_files("test_codec.cpp")
  132. add_deps("av_codec")
  133. set_targetdir("$(buildir)/bin")
  134. -- FFmpeg库链接
  135. if is_plat("windows") then
  136. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  137. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  138. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  139. add_links("avdevice", "avfilter", "postproc")
  140. end
  141. -- 解码器测试程序
  142. target("test_decoder")
  143. set_kind("binary")
  144. add_files("test_decoder.cpp")
  145. add_deps("av_codec")
  146. set_targetdir("$(buildir)/bin")
  147. -- FFmpeg库链接
  148. if is_plat("windows") then
  149. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  150. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  151. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  152. add_links("avdevice", "avfilter", "postproc")
  153. end
  154. -- 音频编码器测试程序
  155. target("test_audio_encoder")
  156. set_kind("binary")
  157. add_files("test_audio_encoder.cpp")
  158. add_deps("av_codec")
  159. set_targetdir("$(buildir)/bin")
  160. -- FFmpeg库链接
  161. if is_plat("windows") then
  162. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  163. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  164. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  165. add_links("avdevice", "avfilter", "postproc")
  166. end
  167. -- 窗口采集测试程序
  168. target("test_window_capture")
  169. set_kind("binary")
  170. add_files("test_window_capture.cpp")
  171. add_deps("av_capture")
  172. set_targetdir("$(buildir)/bin")
  173. -- FFmpeg库链接
  174. if is_plat("windows") then
  175. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  176. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  177. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  178. add_links("avdevice", "avfilter", "postproc")
  179. end
  180. -- 工具类测试程序
  181. target("test_utils")
  182. set_kind("binary")
  183. add_files("test_utils.cpp")
  184. add_deps("av_utils")
  185. set_targetdir("$(buildir)/bin")
  186. -- FFmpeg库链接
  187. if is_plat("windows") then
  188. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  189. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  190. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  191. add_links("avdevice", "avfilter", "postproc")
  192. end
  193. -- 混流器测试程序
  194. target("test_muxer")
  195. set_kind("binary")
  196. add_files("test_muxer.cpp")
  197. add_deps("av_muxer")
  198. set_targetdir("$(buildir)/bin")
  199. -- FFmpeg库链接
  200. if is_plat("windows") then
  201. add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include")
  202. add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib")
  203. add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
  204. add_links("avdevice", "avfilter", "postproc")
  205. end