CMakeLists.txt 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. project(obs-ffmpeg)
  2. option(ENABLE_FFMPEG_LOGGING "Enables obs-ffmpeg logging" OFF)
  3. find_package(
  4. FFmpeg REQUIRED
  5. COMPONENTS avcodec
  6. avfilter
  7. avdevice
  8. avutil
  9. swscale
  10. avformat
  11. swresample)
  12. add_library(obs-ffmpeg MODULE)
  13. add_library(OBS::ffmpeg ALIAS obs-ffmpeg)
  14. add_subdirectory(ffmpeg-mux)
  15. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/obs-ffmpeg-config.h.in
  16. ${CMAKE_BINARY_DIR}/config/obs-ffmpeg-config.h)
  17. target_sources(
  18. obs-ffmpeg
  19. PRIVATE obs-ffmpeg.c
  20. obs-ffmpeg-audio-encoders.c
  21. obs-ffmpeg-av1.c
  22. obs-ffmpeg-nvenc.c
  23. obs-ffmpeg-output.c
  24. obs-ffmpeg-mux.c
  25. obs-ffmpeg-mux.h
  26. obs-ffmpeg-hls-mux.c
  27. obs-ffmpeg-source.c
  28. obs-ffmpeg-compat.h
  29. obs-ffmpeg-formats.h
  30. ${CMAKE_BINARY_DIR}/config/obs-ffmpeg-config.h)
  31. target_include_directories(obs-ffmpeg PRIVATE ${CMAKE_BINARY_DIR}/config)
  32. target_link_libraries(
  33. obs-ffmpeg
  34. PRIVATE OBS::libobs
  35. OBS::media-playback
  36. OBS::opts-parser
  37. FFmpeg::avcodec
  38. FFmpeg::avfilter
  39. FFmpeg::avformat
  40. FFmpeg::avdevice
  41. FFmpeg::avutil
  42. FFmpeg::swscale
  43. FFmpeg::swresample)
  44. if(ENABLE_FFMPEG_LOGGING)
  45. target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-logging.c)
  46. endif()
  47. set_target_properties(obs-ffmpeg PROPERTIES FOLDER "plugins/obs-ffmpeg" PREFIX
  48. "")
  49. if(OS_WINDOWS)
  50. if(MSVC)
  51. target_link_libraries(obs-ffmpeg PRIVATE OBS::w32-pthreads)
  52. endif()
  53. set(MODULE_DESCRIPTION "OBS FFmpeg module")
  54. configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in
  55. obs-ffmpeg.rc)
  56. target_sources(obs-ffmpeg PRIVATE jim-nvenc.c jim-nvenc.h jim-nvenc-helpers.c
  57. obs-ffmpeg.rc)
  58. elseif(OS_POSIX AND NOT OS_MACOS)
  59. find_package(Libpci REQUIRED)
  60. target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-vaapi.c)
  61. target_link_libraries(obs-ffmpeg PRIVATE LIBPCI::LIBPCI)
  62. endif()
  63. setup_plugin_target(obs-ffmpeg)