FindFFMPEG.cmake 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. # - Try to find ffmpeg libraries (libavcodec, libavformat, libavutil and libswscale)
  2. # Once done this will define
  3. #
  4. # FFMPEG_FOUND - system has ffmpeg or libav
  5. # FFMPEG_INCLUDE_DIR - the ffmpeg include directory
  6. # FFMPEG_LIBRARIES - Link these to use ffmpeg
  7. # FFMPEG_LIBAVCODEC
  8. # FFMPEG_LIBAVFORMAT
  9. # FFMPEG_LIBAVUTIL
  10. # FFMPEG_LIBSWSCALE
  11. #
  12. # Copyright (c) 2008 Andreas Schneider <mail@cynapses.org>
  13. # Modified for other libraries by Lasse Kärkkäinen <tronic>
  14. # Modified for Hedgewars by Stepik777
  15. # Modified for FFmpeg-example Tuukka Pasanen 2018
  16. #
  17. # Redistribution and use is allowed according to the terms of the New
  18. # BSD license.
  19. #
  20. include(FindPackageHandleStandardArgs)
  21. find_package_handle_standard_args(FFMPEG
  22. FOUND_VAR FFMPEG_FOUND
  23. VERSION_VAR FFMPEG_VERSION
  24. HANDLE_COMPONENTS
  25. )
  26. if(FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
  27. # in cache already
  28. set(FFMPEG_FOUND TRUE)
  29. else()
  30. # use pkg-config to get the directories and then use these values
  31. # in the FIND_PATH() and FIND_LIBRARY() calls
  32. find_package(PkgConfig)
  33. if(PKG_CONFIG_FOUND)
  34. pkg_check_modules(_FFMPEG_AVCODEC libavcodec)
  35. pkg_check_modules(_FFMPEG_AVFORMAT libavformat)
  36. pkg_check_modules(_FFMPEG_AVUTIL libavutil)
  37. pkg_check_modules(_FFMPEG_SWSCALE libswscale)
  38. endif()
  39. find_path(FFMPEG_AVCODEC_INCLUDE_DIR
  40. NAMES libavcodec/avcodec.h
  41. PATHS ${_FFMPEG_AVCODEC_INCLUDE_DIRS}
  42. /usr/include
  43. /usr/local/include
  44. /opt/local/include
  45. /sw/include
  46. PATH_SUFFIXES ffmpeg libav)
  47. find_library(FFMPEG_LIBAVCODEC
  48. NAMES avcodec
  49. PATHS ${_FFMPEG_AVCODEC_LIBRARY_DIRS}
  50. /usr/lib
  51. /usr/local/lib
  52. /opt/local/lib
  53. /sw/lib)
  54. find_library(FFMPEG_LIBAVFORMAT
  55. NAMES avformat
  56. PATHS ${_FFMPEG_AVFORMAT_LIBRARY_DIRS}
  57. /usr/lib
  58. /usr/local/lib
  59. /opt/local/lib
  60. /sw/lib)
  61. find_library(FFMPEG_LIBAVUTIL
  62. NAMES avutil
  63. PATHS ${_FFMPEG_AVUTIL_LIBRARY_DIRS}
  64. /usr/lib
  65. /usr/local/lib
  66. /opt/local/lib
  67. /sw/lib)
  68. find_library(FFMPEG_LIBSWSCALE
  69. NAMES swscale
  70. PATHS ${_FFMPEG_SWSCALE_LIBRARY_DIRS}
  71. /usr/lib
  72. /usr/local/lib
  73. /opt/local/lib
  74. /sw/lib)
  75. find_library(FFMPEG_LIBSWRESAMPLE
  76. NAMES swresample
  77. PATHS ${_FFMPEG_SWRESAMPLE_LIBRARY_DIRS}
  78. /usr/lib
  79. /usr/local/lib
  80. /opt/local/lib
  81. /sw/lib)
  82. if(FFMPEG_LIBAVCODEC AND FFMPEG_LIBAVFORMAT)
  83. set(FFMPEG_FOUND TRUE)
  84. endif()
  85. if(FFMPEG_FOUND)
  86. set(FFMPEG_INCLUDE_DIR ${FFMPEG_AVCODEC_INCLUDE_DIR})
  87. set(FFMPEG_LIBRARIES
  88. ${FFMPEG_LIBAVCODEC}
  89. ${FFMPEG_LIBAVFORMAT}
  90. ${FFMPEG_LIBAVUTIL}
  91. ${FFMPEG_LIBSWSCALE}
  92. ${FFMPEG_LIBSWRESAMPLE})
  93. endif()
  94. if(FFMPEG_FOUND)
  95. if(NOT FFMPEG_FIND_QUIETLY)
  96. message(STATUS
  97. "Found FFMPEG or Libav: ${FFMPEG_LIBRARIES}, ${FFMPEG_INCLUDE_DIR}")
  98. endif()
  99. else()
  100. if(FFMPEG_FIND_REQUIRED)
  101. message(FATAL_ERROR
  102. "Could not find libavcodec or libavformat or libavutil or libswscale")
  103. endif()
  104. endif()
  105. endif()