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)
|