cmake_minimum_required(VERSION 3.3) set(BIN cffmpeg) project(${BIN}) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() option(GB28181 "help string describing GB28181" ON) option(ARM "help string describing ARM" OFF) if (GB28181) set(EXTRA_FLAGS -DGB28181) else() set(EXTRA_FLAGS) endif() set(CMAKE_CXX_FLAGS "-DLIB_CFFMPEG ${EXTRA_FLAGS} -fPIC -Wl,-Bsymbolic ${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS "-DLIB_CFFMPEG ${EXTRA_FLAGS} -fPIC -Wl,-Bsymbolic ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "-w -g -O0 -std=c++11 ${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS_DEBUG "-w -g -O0 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS_RELEASE "-w -g -O2 -std=c++11 ${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS_RELEASE "-w -g -O2 ${CMAKE_C_FLAGS}") include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/csrc/thirdparty ${CMAKE_SOURCE_DIR}/csrc/thirdparty/whereami ${CMAKE_SOURCE_DIR}/csrc/thirdparty/ffmpeg/include ${CMAKE_SOURCE_DIR}/csrc/thirdparty/gb28181/include ) if (GB28181) link_directories(${CMAKE_SOURCE_DIR}/csrc/thirdparty/gb28181/lib) set(LIBGB rtspclient StreamParse) else() set(LIBGB) endif() if (ARM) set(FFMPEG_PATH ${CMAKE_SOURCE_DIR}/csrc/thirdparty/arm-ffmpeg/lib) else() set(FFMPEG_PATH ${CMAKE_SOURCE_DIR}/csrc/thirdparty/ffmpeg/lib) endif() set(CMAKE_LIBRARY_PATH ${FFMPEG_PATH} ${CMAKE_LIBRARY_PATH}) find_library(avutil NAMES libavutil.a ) find_library(avformat NAMES libavformat.a ) find_library(avcodec NAMES libavcodec.a ) find_library(avfilter NAMES libavfilter.a) find_library(swscale NAMES libswscale.a) find_library(265 NAMES libx265.a) find_library(264 NAMES libx264.a) if(ARM) find_library(aom NAMES libaom.a) find_library(avdevice NAMES libavdevice.a) find_library(ogg NAMES libogg.a) find_library(fdkaac NAMES libfdk-aac.a) find_library(postproc NAMES libpostproc.a) find_library(swresample NAMES libswresample.a) find_library(theora NAMES libtheora.a) find_library(theoradec NAMES libtheoradec.a) find_library(theoraenc NAMES libtheoraenc.a) find_library(vidstab NAMES libvidstab.a) find_library(vorbis NAMES libvorbis.a) find_library(vorbisenc NAMES libvorbisenc.a) find_library(vorbisfile NAMES libvorbisfile.a) find_library(vpx NAMES libvpx.a) find_library(xvidcore NAMES libxvidcore.a) find_library(mp3 NAMES libmp3lame.a) endif() set(LINK_LIB ${avformat} ${avcodec} ${avfilter} ${swscale} ${avutil} ${265} ${264} ) if(ARM) list(APPEND LINK_LIB ${aom} ${avdevice} ${ogg} ${fdkaac} ${mp3} ${postproc} ${swresample} ${theora} ${theoradec} ${theoraenc} ${vidstab} ${vorbis} ${vorbisenc} ${vorbisfile} ${vpx} ${xvidcore} ) endif() file(GLOB_RECURSE FFMPEG_LIST ${CMAKE_SOURCE_DIR}/csrc/*.cpp) list(APPEND FFMPEG_LIST ${CMAKE_SOURCE_DIR}/csrc/thirdparty/whereami/whereami.c) add_library(${BIN} SHARED ${FFMPEG_LIST}) target_link_libraries(${BIN} ${LINK_LIB} ${LIBGB} pthread dl)