CMakeLists.txt 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. cmake_minimum_required(VERSION 3.28...3.30)
  2. option(ENABLE_NVENC "Build NVIDIA Hardware Encoder Plugin" ON)
  3. option(ENABLE_NVENC_FFMPEG_IDS "Register FFmpeg encoder IDs" ON)
  4. mark_as_advanced(ENABLE_NVENC_FFMPEG_IDS)
  5. if(NOT ENABLE_NVENC)
  6. target_disable_feature(obs-nvenc "NVIDIA Hardware Encoder")
  7. target_disable(obs-nvenc)
  8. return()
  9. endif()
  10. if(NOT TARGET OBS::opts-parser)
  11. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/opts-parser" "${CMAKE_BINARY_DIR}/shared/opts-parser")
  12. endif()
  13. if(OS_LINUX AND NOT TARGET OBS::glad)
  14. add_subdirectory("${CMAKE_SOURCE_DIR}/deps/glad" "${CMAKE_BINARY_DIR}/deps/glad")
  15. endif()
  16. find_package(FFnvcodec 12 REQUIRED)
  17. add_library(obs-nvenc MODULE)
  18. add_library(OBS::nvenc ALIAS obs-nvenc)
  19. add_subdirectory(obs-nvenc-test)
  20. target_sources(
  21. obs-nvenc
  22. PRIVATE
  23. $<$<PLATFORM_ID:Linux>:nvenc-opengl.c>
  24. $<$<PLATFORM_ID:Windows>:nvenc-d3d11.c>
  25. cuda-helpers.c
  26. cuda-helpers.h
  27. nvenc-compat.c
  28. nvenc-cuda.c
  29. nvenc-helpers.c
  30. nvenc-helpers.h
  31. nvenc-internal.h
  32. nvenc-opts-parser.c
  33. nvenc-properties.c
  34. nvenc.c
  35. obs-nvenc.c
  36. obs-nvenc.h
  37. )
  38. target_link_libraries(
  39. obs-nvenc
  40. PRIVATE OBS::libobs OBS::opts-parser FFnvcodec::FFnvcodec $<$<PLATFORM_ID:Linux>:OBS::glad>
  41. )
  42. target_compile_definitions(obs-nvenc PRIVATE $<$<BOOL:${ENABLE_NVENC_FFMPEG_IDS}>:REGISTER_FFMPEG_IDS>)
  43. if(OS_WINDOWS)
  44. configure_file(cmake/windows/obs-module.rc.in obs-nvenc.rc)
  45. target_sources(obs-nvenc PRIVATE obs-nvenc.rc)
  46. endif()
  47. set_target_properties_obs(obs-nvenc PROPERTIES FOLDER plugins/obs-nvenc PREFIX "")