1MACRO (getFfmpegVersionFromHeader description headerFile definition ffmpegVersion) 2 FILE(READ "${headerFile}" FFMPEG_H) 3 STRING(REGEX MATCH "#define[ ]+${definition}[ ]+([0-9]+)" FFMPEG_H "${FFMPEG_H}") 4 STRING(REGEX REPLACE ".*[ ]([0-9]+).*" "\\1" ${ffmpegVersion} "${FFMPEG_H}") 5ENDMACRO (getFfmpegVersionFromHeader) 6 7MACRO (getFfmpegLibNames sourceDir) 8 getFfmpegVersionFromHeader("libavcodec" "${sourceDir}/libavcodec/version.h" LIBAVCODEC_VERSION_MAJOR LIBAVCODEC_VERSION) 9 getFfmpegVersionFromHeader("libavformat" "${sourceDir}/libavformat/version.h" LIBAVFORMAT_VERSION_MAJOR LIBAVFORMAT_VERSION) 10 getFfmpegVersionFromHeader("libavutil" "${sourceDir}/libavutil/version.h" LIBAVUTIL_VERSION_MAJOR LIBAVUTIL_VERSION) 11 getFfmpegVersionFromHeader("libpostproc" "${sourceDir}/libpostproc/version.h" LIBPOSTPROC_VERSION_MAJOR LIBPOSTPROC_VERSION) 12 getFfmpegVersionFromHeader("libswscale" "${sourceDir}/libswscale/version.h" LIBSWSCALE_VERSION_MAJOR LIBSWSCALE_VERSION) 13 SET(VERBOSE 1) 14 if (VERBOSE) 15 MESSAGE(STATUS "AVFORMAT : ${LIBAVFORMAT_VERSION}, Major : ${LIBAVFORMAT_VERSION_MAJOR}") 16 MESSAGE(STATUS "AVCODEC : ${LIBAVCODEC_VERSION}, Major : ${LIBAVCODEC_VERSION_MAJOR}") 17 MESSAGE(STATUS "AVUTIL : ${LIBAVUTIL_VERSION}, Major : ${LIBAVUTIL_VERSION_MAJOR}") 18 MESSAGE(STATUS "POSTPRC : ${LIBPOSTPROC_VERSION}, Major : ${LIBPOSTPROC_VERSION_MAJOR}") 19 MESSAGE(STATUS "SWSCALE : ${LIBSWSCALE_VERSION}, Major : ${LIBSWSCALE_VERSION_MAJOR}") 20 message("") 21 endif (VERBOSE) 22 23 if (UNIX) 24 set(LIBAVCODEC_ADM ADM6) 25 endif (UNIX) 26 27 if (APPLE) 28 set(LIBAVCODEC_LIB lib${LIBAVCODEC_ADM}avcodec.${LIBAVCODEC_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 29 set(LIBAVFORMAT_LIB lib${LIBAVCODEC_ADM}avformat.${LIBAVFORMAT_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 30 set(LIBAVUTIL_LIB lib${LIBAVCODEC_ADM}avutil.${LIBAVUTIL_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 31 set(LIBPOSTPROC_LIB lib${LIBAVCODEC_ADM}postproc.${LIBPOSTPROC_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 32 set(LIBSWSCALE_LIB lib${LIBAVCODEC_ADM}swscale.${LIBSWSCALE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 33 elseif (UNIX) 34 set(LIBAVCODEC_LIB lib${LIBAVCODEC_ADM}avcodec${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBAVCODEC_VERSION}) 35 set(LIBAVFORMAT_LIB lib${LIBAVCODEC_ADM}avformat${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBAVFORMAT_VERSION}) 36 set(LIBAVUTIL_LIB lib${LIBAVCODEC_ADM}avutil${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBAVUTIL_VERSION}) 37 set(LIBPOSTPROC_LIB lib${LIBAVCODEC_ADM}postproc${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBPOSTPROC_VERSION}) 38 set(LIBSWSCALE_LIB lib${LIBAVCODEC_ADM}swscale${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBSWSCALE_VERSION}) 39 elseif (MINGW) 40 set(LIBAVCODEC_LIB ${LIBAVCODEC_ADM}avcodec-${LIBAVCODEC_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 41 set(LIBAVFORMAT_LIB ${LIBAVCODEC_ADM}avformat-${LIBAVFORMAT_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 42 set(LIBAVUTIL_LIB ${LIBAVCODEC_ADM}avutil-${LIBAVUTIL_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 43 set(LIBPOSTPROC_LIB ${LIBAVCODEC_ADM}postproc-${LIBPOSTPROC_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 44 set(LIBSWSCALE_LIB ${LIBAVCODEC_ADM}swscale-${LIBSWSCALE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) 45 elseif (MSVC) 46 set(LIBAVCODEC_LIB avcodec.lib) 47 set(LIBAVFORMAT_LIB avformat.lib) 48 set(LIBAVUTIL_LIB avutil.lib) 49 set(LIBPOSTPROC_LIB postproc.lib) 50 set(LIBSWSCALE_LIB swscale.lib) 51 endif (APPLE) 52ENDMACRO (getFfmpegLibNames) 53 54MACRO (registerFFmpeg sourceDir binaryDir installed) 55 getFfmpegLibNames("${sourceDir}") 56 57 add_library(ADM_libswscale UNKNOWN IMPORTED) 58 add_library(ADM_libpostproc UNKNOWN IMPORTED) 59 add_library(ADM_libavutil UNKNOWN IMPORTED) 60 add_library(ADM_libavcodec UNKNOWN IMPORTED) 61 add_library(ADM_libavformat UNKNOWN IMPORTED) 62 63 if (${installed}) 64 set_property(TARGET ADM_libswscale PROPERTY IMPORTED_LOCATION "${binaryDir}/${LIBSWSCALE_LIB}") 65 set_property(TARGET ADM_libpostproc PROPERTY IMPORTED_LOCATION "${binaryDir}/${LIBPOSTPROC_LIB}") 66 set_property(TARGET ADM_libavutil PROPERTY IMPORTED_LOCATION "${binaryDir}/${LIBAVUTIL_LIB}") 67 set_property(TARGET ADM_libavcodec PROPERTY IMPORTED_LOCATION "${binaryDir}/${LIBAVCODEC_LIB}") 68 set_property(TARGET ADM_libavformat PROPERTY IMPORTED_LOCATION "${binaryDir}/${LIBAVFORMAT_LIB}") 69 else (${installed}) 70 set_property(TARGET ADM_libswscale PROPERTY IMPORTED_LOCATION "${binaryDir}/libswscale/${LIBSWSCALE_LIB}") 71 set_property(TARGET ADM_libpostproc PROPERTY IMPORTED_LOCATION "${binaryDir}/libpostproc/${LIBPOSTPROC_LIB}") 72 set_property(TARGET ADM_libavutil PROPERTY IMPORTED_LOCATION "${binaryDir}/libavutil/${LIBAVUTIL_LIB}") 73 set_property(TARGET ADM_libavcodec PROPERTY IMPORTED_LOCATION "${binaryDir}/libavcodec/${LIBAVCODEC_LIB}") 74 set_property(TARGET ADM_libavformat PROPERTY IMPORTED_LOCATION "${binaryDir}/libavformat/${LIBAVFORMAT_LIB}") 75 76 add_custom_target(libavcodec DEPENDS "${binaryDir}/libavcodec/${LIBAVCODEC_LIB}") 77 add_custom_target(libavformat DEPENDS "${binaryDir}/libavformat/${LIBAVFORMAT_LIB}") 78 add_custom_target(libavutil DEPENDS "${binaryDir}/libavutil/${LIBAVUTIL_LIB}") 79 add_custom_target(libpostproc DEPENDS "${binaryDir}/libpostproc/${LIBPOSTPROC_LIB}") 80 add_custom_target(libswscale DEPENDS "${binaryDir}/libswscale/${LIBSWSCALE_LIB}") 81 add_custom_target(ffmpeg DEPENDS "${binaryDir}/ffmpeg${CMAKE_EXECUTABLE_SUFFIX}") 82 83 if (${CMAKE_VERSION} VERSION_GREATER 2.8.3) 84 add_dependencies(ADM_libavcodec libavcodec) 85 add_dependencies(ADM_libavformat libavformat) 86 add_dependencies(ADM_libavutil libavutil) 87 add_dependencies(ADM_libpostproc libpostproc) 88 add_dependencies(ADM_libswscale libswscale) 89 endif (${CMAKE_VERSION} VERSION_GREATER 2.8.3) 90 endif (${installed}) 91ENDMACRO (registerFFmpeg) 92 93MACRO (convertPathToUnix pathVariableName bashExecutable) 94 if (WIN32) 95 get_filename_component(directory ${${pathVariableName}} PATH) 96 get_filename_component(fileName ${${pathVariableName}} NAME) 97 98 execute_process(COMMAND ${bashExecutable} -c "echo $PWD" WORKING_DIRECTORY "${directory}" 99 OUTPUT_VARIABLE ${pathVariableName}) 100 101 string(REGEX REPLACE "(\r?\n)+$" "" ${pathVariableName} "${${pathVariableName}}") 102 set(${pathVariableName} "${${pathVariableName}}/${fileName}") 103 endif (WIN32) 104ENDMACRO (convertPathToUnix) 105