编辑 | blame | 历史 | 原始文档
cmake_minimum_required(VERSION 3.3)

set(BIN cffmpeg)

project(${BIN})

# set(CMAKE_C_VISIBILITY_PRESET hidden)
# set(CMAKE_CXX_VISIBILITY_PRESET hidden)

set(CMAKE_CXX_FLAGS "-DLIB_CFFMPEG -fPIC -Wl,-Bsymbolic ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "-DLIB_CFFMPEG -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
)

link_directories(/usr/local/cuda/lib64)

set(CMAKE_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/csrc/thirdparty/ffmpeg/lib ${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)
    
set(LINK_LIB 
   ${avformat} 
   ${avcodec} 
   ${avfilter} 
   ${swscale} 
   ${avutil} 
   ${265} 
   ${264} 
   )

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} ${CMAKE_SOURCE_DIR}/csrc/cffmpeg.cpp)
add_custom_command(TARGET ${BIN} 
                 POST_BUILD
                 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/build/lib${BIN}.so ${CMAKE_SOURCE_DIR}/../lib)
target_link_libraries(${BIN} ${LINK_LIB} numa nppig nppicc nppc -lz pthread dl)