1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
include(FindPackageHandleStandardArgs)
find_package(PkgConfig)
pkg_check_modules(AVCODEC libavcodec)
pkg_check_modules(AVFORMAT libavformat)
pkg_check_modules(AVUTIL libavutil)
pkg_check_modules(AVFILTER libavfilter)
find_package_handle_standard_args(FFmpeg
FOUND_VAR FFmpeg_FOUND
REQUIRED_VARS AVCODEC_FOUND AVFORMAT_FOUND AVUTIL_FOUND AVFILTER_FOUND
)
FIND_LIBRARY(AVCODEC_LIBRARY_PATH
NAMES ${AVCODEC_LIBRARIES}
PATHS ${AVCODEC_LIBRARY_DIRS}
)
if (NOT AVCODEC_LIBRARY_PATH)
message(FATAL_ERROR "Could not determine full avcodec library path")
endif ()
FIND_LIBRARY(AVFORMAT_LIBRARY_PATH
NAMES ${AVFORMAT_LIBRARIES}
PATHS ${AVFORMAT_LIBRARY_DIRS}
)
if (NOT AVFORMAT_LIBRARY_PATH)
message(FATAL_ERROR "Could not determine full avformat library path")
endif ()
FIND_LIBRARY(AVFILTER_LIBRARY_PATH
NAMES ${AVFILTER_LIBRARIES}
PATHS ${AVFILTER_LIBRARY_DIRS}
)
if (NOT AVFILTER_LIBRARY_PATH)
message(FATAL_ERROR "Could not determine full avfilter library path")
endif ()
FIND_LIBRARY(AVUTIL_LIBRARY_PATH
NAMES ${AVUTIL_LIBRARIES}
PATHS ${AVUTIL_LIBRARY_DIRS}
)
if (NOT AVUTIL_LIBRARY_PATH)
message(FATAL_ERROR "Could not determine full avutil library path")
endif ()
mark_as_advanced(
AVFORMAT_LIBRARY_PATH
AVUTIL_LIBRARY_PATH
AVCODEC_LIBRARY_PATH
AVFILTER_LIBRARY_PATH
)
# Determine if we need static linking
set(FFMPEG_USE_STATIC_LIBS ${ENABLE_FULL_STATIC})
message(STATUS "FFmpeg found: ${FFmpeg_FOUND}")
message(STATUS " avcodec: ${AVCODEC_LIBRARY_PATH}")
message(STATUS " avformat: ${AVFORMAT_LIBRARY_PATH}")
message(STATUS " avfilter: ${AVFILTER_LIBRARY_PATH}")
message(STATUS " avutil: ${AVUTIL_LIBRARY_PATH}")
message(STATUS " static: ${FFMPEG_USE_STATIC_LIBS}")
if(FFmpeg_FOUND AND NOT TARGET FFmpeg::avformat)
add_library(FFmpeg::avformat UNKNOWN IMPORTED)
set_target_properties(FFmpeg::avformat PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
INTERFACE_INCLUDE_DIRECTORIES "${AVFORMAT_INCLUDE_DIRS}"
INTERFACE_COMPILE_DEFINITIONS __STDC_CONSTANT_MACROS
INTERFACE_COMPILE_OPTIONS "${AVFORMAT_CFLAGS_OTHER}"
IMPORTED_LOCATION ${AVFORMAT_LIBRARY_PATH}
)
# Use _STATIC_LIBRARIES and _STATIC_LIBRARY_DIRS for static builds
if(FFMPEG_USE_STATIC_LIBS)
set_property(TARGET FFmpeg::avformat APPEND PROPERTY
INTERFACE_LINK_DIRECTORIES "${AVFORMAT_STATIC_LIBRARY_DIRS}")
set_property(TARGET FFmpeg::avformat APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "${AVFORMAT_STATIC_LIBRARIES}")
endif()
endif()
if(FFmpeg_FOUND AND NOT TARGET FFmpeg::avutil)
add_library(FFmpeg::avutil UNKNOWN IMPORTED)
set_target_properties(FFmpeg::avutil PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
INTERFACE_INCLUDE_DIRECTORIES "${AVUTIL_INCLUDE_DIRS}"
INTERFACE_COMPILE_DEFINITIONS __STDC_CONSTANT_MACROS
INTERFACE_COMPILE_OPTIONS "${AVUTIL_CFLAGS_OTHER}"
IMPORTED_LOCATION ${AVUTIL_LIBRARY_PATH}
)
if(FFMPEG_USE_STATIC_LIBS)
set_property(TARGET FFmpeg::avutil APPEND PROPERTY
INTERFACE_LINK_DIRECTORIES "${AVUTIL_STATIC_LIBRARY_DIRS}")
set_property(TARGET FFmpeg::avutil APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "${AVUTIL_STATIC_LIBRARIES}")
endif()
endif()
if(FFmpeg_FOUND AND NOT TARGET FFmpeg::avcodec)
add_library(FFmpeg::avcodec UNKNOWN IMPORTED)
set_target_properties(FFmpeg::avcodec PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
INTERFACE_INCLUDE_DIRECTORIES "${AVCODEC_INCLUDE_DIRS}"
INTERFACE_COMPILE_DEFINITIONS __STDC_CONSTANT_MACROS
INTERFACE_COMPILE_OPTIONS "${AVCODEC_CFLAGS_OTHER}"
IMPORTED_LOCATION ${AVCODEC_LIBRARY_PATH}
)
if(FFMPEG_USE_STATIC_LIBS)
set_property(TARGET FFmpeg::avcodec APPEND PROPERTY
INTERFACE_LINK_DIRECTORIES "${AVCODEC_STATIC_LIBRARY_DIRS}")
set_property(TARGET FFmpeg::avcodec APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "${AVCODEC_STATIC_LIBRARIES}")
if(APPLE)
set_property(TARGET FFmpeg::avcodec APPEND PROPERTY
INTERFACE_LINK_LIBRARIES
"-framework CoreVideo"
"-framework Security"
"-framework CoreFoundation"
"-framework VideoToolbox"
"-framework AudioToolbox")
endif()
endif()
endif()
if(FFmpeg_FOUND AND NOT TARGET FFmpeg::avfilter)
add_library(FFmpeg::avfilter UNKNOWN IMPORTED)
set_target_properties(FFmpeg::avfilter PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
INTERFACE_INCLUDE_DIRECTORIES "${AVFILTER_INCLUDE_DIRS}"
INTERFACE_COMPILE_DEFINITIONS __STDC_CONSTANT_MACROS
INTERFACE_COMPILE_OPTIONS "${AVFILTER_CFLAGS_OTHER}"
IMPORTED_LOCATION ${AVFILTER_LIBRARY_PATH}
)
if(FFMPEG_USE_STATIC_LIBS)
set_property(TARGET FFmpeg::avfilter APPEND PROPERTY
INTERFACE_LINK_DIRECTORIES "${AVFILTER_STATIC_LIBRARY_DIRS}")
set_property(TARGET FFmpeg::avfilter APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "${AVFILTER_STATIC_LIBRARIES}")
if(APPLE)
set_property(TARGET FFmpeg::avfilter APPEND PROPERTY
INTERFACE_LINK_LIBRARIES
"-framework CoreImage"
"-framework CoreGraphics"
"-framework OpenGL"
"-framework Foundation"
"-framework AppKit"
)
endif()
endif()
endif()
find_package(Threads)
set_property(TARGET FFmpeg::avutil APPEND PROPERTY INTERFACE_LINK_LIBRARIES Threads::Threads)
|