Celestia

Форк
0
/
FindFFMPEG.cmake 
86 строк · 2.9 Кб
1
macro(find_ffmpeg_lib)
2
  if(NOT(${ARGC} EQUAL 3))
3
    message(FATAL_ERROR "find_ffmpeg_lib requires exactly 3 arguments")
4
  endif()
5

6
  set(__name   ${ARGV0})
7
  set(__header ${ARGV1})
8
  set(__lib    ${ARGV2})
9

10
  find_library(${__name}_LIBRARY ${__lib})
11
  find_path(${__name}_INCLUDE_DIR ${__header}
12
    HINTS /usr/include/ffmpeg)
13
  set(FPHSA_NAME_MISMATCHED 1)
14
  find_package_handle_standard_args(${__name}
15
                                  FOUND_VAR ${__name}_FOUND
16
                                  REQUIRED_VARS ${__name}_INCLUDE_DIR ${__name}_LIBRARY
17
                                  FAIL_MESSAGE "Failed to find ${__name}")
18
  unset(FPHSA_NAME_MISMATCHED)
19

20
  set(${__name}_INCLUDE_DIRS ${${__name}_INCLUDE_DIR})
21
  set(${__name}_LIBRARIES ${${__name}_LIBRARY})
22

23
  list(APPEND FFMPEG_INCLUDE_DIRS ${${__name}_INCLUDE_DIR})
24
  list(REMOVE_DUPLICATES FFMPEG_INCLUDE_DIRS)
25
  list(APPEND FFMPEG_LIBRARIES ${${__name}_LIBRARY})
26
  list(REMOVE_DUPLICATES FFMPEG_LIBRARIES)
27

28
  if(NOT TARGET FFMPEG::${__name})
29
    add_library(FFMPEG::${__name} UNKNOWN IMPORTED)
30
    set_target_properties(FFMPEG::${__name} PROPERTIES
31
      INTERFACE_INCLUDE_DIRECTORIES "${${__name}_INCLUDE_DIR}"
32
      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
33
      IMPORTED_LOCATION "${${__name}_LIBRARY}")
34
  endif()
35

36
  mark_as_advanced(${__name}_INCLUDE_DIR ${__name}_LIBRARY ${__name}_INCLUDE_DIRS ${__name}_LIBRARIES)
37
endmacro()
38

39
include(FindPackageHandleStandardArgs)
40
if(FFMPEG_FIND_COMPONENTS)
41
  foreach(component ${FFMPEG_FIND_COMPONENTS})
42
    string(TOUPPER ${component} _COMPONENT)
43
    set(FFMPEG_USE_${_COMPONENT} 1)
44
  endforeach()
45
endif()
46

47
set(FFMPEG_INCLUDE_DIRS)
48
set(FFMPEG_LIBRARIES)
49

50
if(FFMPEG_USE_AVCODEC)
51
  find_ffmpeg_lib(AVCODEC libavcodec/avcodec.h avcodec)
52
endif()
53
if(FFMPEG_USE_AVFORMAT)
54
  find_ffmpeg_lib(AVFORMAT libavformat/avformat.h avformat)
55
endif()
56
if(FFMPEG_USE_AVUTIL)
57
  find_ffmpeg_lib(AVUTIL libavutil/avutil.h avutil)
58
endif()
59
if(FFMPEG_USE_AVDEVICE)
60
  find_ffmpeg_lib(AVDEVICE libavdevice/avdevice.h avdevice)
61
endif()
62
if(FFMPEG_USE_SWSCALE)
63
  find_ffmpeg_lib(SWSCALE libswscale/swscale.h swscale)
64
endif()
65

66
if(NOT TARGET FFMPEG::FFMPEG)
67
  add_library(FFMPEG::FFMPEG UNKNOWN IMPORTED)
68
  set_target_properties(FFMPEG::FFMPEG PROPERTIES
69
    IMPORTED_LINK_INTERFACE_LANGUAGES "C"
70
    INTERFACE_INCLUDE_DIRECTORIES "${FFMPEG_INCLUDE_DIR}")
71
  if(TARGET FFMPEG::AVCODEC)
72
    set_target_properties(FFMPEG::FFMPEG PROPERTIES INTERFACE_LINK_LIBRARIES FFMPEG::AVCODEC)
73
  endif()
74
  if(TARGET FFMPEG::AVUTIL)
75
    set_target_properties(FFMPEG::FFMPEG PROPERTIES INTERFACE_LINK_LIBRARIES FFMPEG::AVUTIL)
76
  endif()
77
  if(TARGET FFMPEG::AVDEVICE)
78
    set_target_properties(FFMPEG::FFMPEG PROPERTIES INTERFACE_LINK_LIBRARIES FFMPEG::AVDEVICE)
79
  endif()
80
  if(TARGET FFMPEG::AVFORMAT)
81
   set_target_properties(FFMPEG::FFMPEG PROPERTIES INTERFACE_LINK_LIBRARIES FFMPEG::AVFORMAT)
82
  endif()
83
  if(TARGET FFMPEG::SWSCALE)
84
    set_target_properties(FFMPEG::FFMPEG PROPERTIES INTERFACE_LINK_LIBRARIES FFMPEG::SWSCALE)
85
  endif()
86
endif()
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.