191 lines
10 KiB
CMake
191 lines
10 KiB
CMake
|
|
cmake_minimum_required(VERSION 3.0...3.5)
|
||
|
|
|
||
|
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
|
|
||
|
|
set(CC_FFMPEG_INC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/Windows/include
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/src
|
||
|
|
PARENT_SCOPE
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
add_library(CC_FFmpeg_API STATIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/src/CCMP3.cpp
|
||
|
|
src/CCPCM.h
|
||
|
|
)
|
||
|
|
if (WIN32)
|
||
|
|
message(STATUS "FFMPEG Windows")
|
||
|
|
target_include_directories(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/Windows/include
|
||
|
|
)
|
||
|
|
target_link_libraries(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avcodec-62.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avdevice-62.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avfilter-11.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avformat-62.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avutil-60.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/swresample-6.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/swscale-9.dll
|
||
|
|
)
|
||
|
|
add_custom_command(TARGET CC_FFmpeg_API POST_BUILD
|
||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avcodec-62.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avdevice-62.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avfilter-11.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avformat-62.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/avutil-60.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/swresample-6.dll
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Windows/swscale-9.dll
|
||
|
|
${CMAKE_BINARY_DIR}/bin
|
||
|
|
COMMENT "Copying FFmpeg DLLs to bin directory"
|
||
|
|
)
|
||
|
|
elseif (CMAKE_SYSTEM_NAME STREQUAL "OHOS")
|
||
|
|
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm|ARM")
|
||
|
|
target_include_directories(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/OHOS/Armv7/include
|
||
|
|
)
|
||
|
|
target_link_libraries(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Armv7/libavcodec.so.60.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Armv7/libavdevice.so.60.1.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Armv7/libavfilter.so.9.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Armv7/libavformat.so.60.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Armv7/libswresample.so.4.10.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Armv7/libswscale.so.7.1.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Armv7/libavutil.so.58.2.100
|
||
|
|
)
|
||
|
|
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64|ARM64")
|
||
|
|
target_include_directories(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/OHOS/Arm64/include
|
||
|
|
)
|
||
|
|
target_link_libraries(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Arm64/libavcodec.so.60.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Arm64/libavdevice.so.60.1.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Arm64/libavfilter.so.9.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Arm64/libavformat.so.60.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Arm64/libswresample.so.4.10.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Arm64/libswscale.so.7.1.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/OHOS/Arm64/libavutil.so.58.2.100
|
||
|
|
)
|
||
|
|
endif()
|
||
|
|
elseif (UNIX)
|
||
|
|
message(STATUS "FFMPEG Linux")
|
||
|
|
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||
|
|
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64|ARM64")
|
||
|
|
message(STATUS "ffmpeg target architecture is ARM64")
|
||
|
|
target_include_directories(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/Linux/Arm64/include
|
||
|
|
)
|
||
|
|
target_link_libraries(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavcodec.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavdevice.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavfilter.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavformat.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavutil.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libswresample.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libswscale.so
|
||
|
|
)
|
||
|
|
add_custom_command(TARGET CC_FFmpeg_API POST_BUILD
|
||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavcodec.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavdevice.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavfilter.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavformat.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libavutil.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libswresample.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Arm64/libswscale.so
|
||
|
|
${CMAKE_BINARY_DIR}/bin
|
||
|
|
COMMENT "Copying FFmpeg DLLs to bin directory"
|
||
|
|
)
|
||
|
|
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64|AMD64")
|
||
|
|
message(STATUS "ffmpeg target architecture is X86_64")
|
||
|
|
target_include_directories(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/Linux/x86/include
|
||
|
|
)
|
||
|
|
target_link_libraries(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavcodec.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavdevice.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavfilter.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavformat.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavutil.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libswresample.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libswscale.so
|
||
|
|
)
|
||
|
|
add_custom_command(TARGET CC_FFmpeg_API POST_BUILD
|
||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavcodec.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavdevice.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavfilter.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavformat.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libavutil.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libswresample.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/x86/libswscale.so
|
||
|
|
${CMAKE_BINARY_DIR}/bin
|
||
|
|
COMMENT "Copying FFmpeg DLLs to bin directory"
|
||
|
|
)
|
||
|
|
endif()
|
||
|
|
else ()
|
||
|
|
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm|ARM")
|
||
|
|
message(STATUS "ffmpeg target architecture is ARMv7")
|
||
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "OHOS")
|
||
|
|
target_include_directories(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/OHOS/Armv7/include
|
||
|
|
)
|
||
|
|
target_link_libraries(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavcodec.so.61.19.101
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavdevice.so.61.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavfilter.so.10.4.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavformat.so.61.7.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavutil.so.59.39.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libpostproc.so.58.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libswresample.so.5.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libswscale.so.8.3.100
|
||
|
|
)
|
||
|
|
add_custom_command(TARGET CC_FFmpeg_API POST_BUILD
|
||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavcodec.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavdevice.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavfilter.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavformat.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavutil.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libswresample.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libpostproc.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libswscale.so
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libx264.so
|
||
|
|
${CMAKE_BINARY_DIR}/bin
|
||
|
|
COMMENT "Copying FFmpeg DLLs to bin directory"
|
||
|
|
)
|
||
|
|
else()
|
||
|
|
target_include_directories(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/include/Linux/Armv7/include
|
||
|
|
)
|
||
|
|
target_link_libraries(CC_FFmpeg_API PUBLIC
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavcodec.so.61.19.101
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavdevice.so.61.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavfilter.so.10.4.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavformat.so.61.7.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libavutil.so.59.39.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libpostproc.so.58.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libswresample.so.5.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/libswscale.so.8.3.100
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/ld-linux.so.3
|
||
|
|
${CMAKE_CURRENT_LIST_DIR}/bin/Linux/Armv7/ld-linux-armhf.so.3
|
||
|
|
)
|
||
|
|
endif()
|
||
|
|
endif()
|
||
|
|
endif()
|
||
|
|
endif()
|
||
|
|
|
||
|
|
if (CMAKE_HOST_WIN32)
|
||
|
|
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||
|
|
|
||
|
|
add_custom_command(TARGET CC_FFmpeg_API POST_BUILD
|
||
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||
|
|
$<TARGET_FILE:CC_FFmpeg_API>
|
||
|
|
${CMAKE_BINARY_DIR}/bin
|
||
|
|
COMMENT "Copying CC_FFmpeg_API library to bin directory"
|
||
|
|
)
|
||
|
|
endif ()
|
||
|
|
|