You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

131 lines
3.8 KiB

#cmake最低版本
cmake_minimum_required(VERSION 3.16)
#项目版本
project(ZFFmpeg VERSION 1.0 LANGUAGES CXX)
#设置moc ui rcc编译开关
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTOUIC ON)
SET(CMAKE_AUTORCC ON)
#设置C++版本
set(CMAKE_CXX_STANDARD 17)
#包含所有.h文件
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
#release编译下依然输出符号和行号
#ADD_DEFINITIONS(-DQT_MESSAGELOGCONTEXT)
#debug和release输出路径
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/build/debug)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/build/release)
#设置QT .cmake文件路径
SET(QT_DIR "D:/Dev/Qt/6.3.2/mingw1120_static_x64_base/lib/cmake")
SET(MSYS2 "D:/Dev/msys64/mingw64")
SET(FFMPEG "D:/Dev/msys64/usr/local/ffmpeg.6.0_Msys2_Mingw")
list(APPEND CMAKE_PREFIX_PATH ${QT_DIR} ${MSYS2} ${FFMPEG})
message("QT_DIR_PATH=${QT_DIR}")
message("MSYS2_DIR_PATH=${MSYS2}")
message("FFMPEG_DIR_PATH=${FFMPEG}")
#查找QT模块
find_package(Qt6Core REQUIRED)
find_package(Qt6Gui REQUIRED)
find_package(Qt6Widgets REQUIRED)
#MSYS2 SDL库
find_package(SDL2 REQUIRED)
if(SDL2_FOUND)
include_directories(${SDL2_INCLUDE_DIRS})
link_directories(${SDL2_LIBRARY_DIRS})
message(STATUS "------------SDL2 INFO START---------------------")
message(STATUS "SDL2_FOUND=Yes")
message(STATUS "SDL2_INCLUDE_DIR_PATH=${SDL2_INCLUDE_DIRS}")
message(STATUS "SDL2 Found:->SDL2_Version:${SDL2_VERSION}")
message(STATUS "SDL2 Found:->SDL2_LIBRARIES:${SDL2_LIBRARIES}")
message(STATUS "SDL2 Found:->SDL2_LINK_LIBRARIES:${SDL2_LINK_LIBRARIES}")
message(STATUS "SDL2 Found:->SDL2_STATIC_LIBRARIES:${SDL2_STATIC_LIBRARIES}")
message(STATUS "------------SDL2 INFO END---------------------")
else()
message(STATUS "SDL2_FOUND=NOT")
endif()
#MSYS2 FFMPEG
SET(ENV{PKG_CONFIG_PATH} D:/Dev/msys64/usr/local/ffmpeg.6.0_Msys2_Mingw_static/lib/pkgconfig)
find_package(PkgConfig REQUIRED)
pkg_check_modules(FFMPEG REQUIRED IMPORTED_TARGET
libavdevice
libavfilter
libavformat
libavcodec
libswresample
libswscale
libavutil
libpostproc
)
if(FFMPEG_FOUND)
include_directories(${FFMPEG_INCLUDE_DIRS})
link_directories(${FFMPEG_LIBRARY_DIRS})
message(STATUS "------------FFMPEG INFO START---------------------")
message(STATUS "FFMPEG_FOUND=Yes")
message(STATUS "FFMPEG_INCLUDE_DIR_PATH=${FFMPEG_INCLUDE_DIRS}")
message(STATUS "FFMPEG Found:->FFMPEG_Version:${FFMPEG_VERSION}")
message(STATUS "FFMPEG Found:->FFMPEG_LIBRARIES:${FFMPEG_LIBRARIES}")
message(STATUS "FFMPEG Found:->FFMPEG_LINK_LIBRARIES:${FFMPEG_LINK_LIBRARIES}")
message(STATUS "FFMPEG Found:->FFMPEG_STATIC_LIBRARIES:${FFMPEG_STATIC_LIBRARIES}")
message(STATUS "------------FFMPEG INFO END---------------------")
else()
message(STATUS "FFMPEG_FOUND=NOT")
endif()
#增加项目第三方库
include_directories(${PROJECT_SOURCE_DIR}/3rdparty/stb)
set(PROJECT_SOURCES
main.cpp
ZFFmpeg.cpp
ZFFmpeg.h
Stb_Impl.cpp
Stb_Media.cpp
Stb_Media.h
MediaSlider.cpp
MediaSlider.h
MediaAVDecoder.h
MediaAVDecoder.cpp
MediaAVStream.cpp
MediaAVStream.h
MediaAVFrame.cpp
MediaAVFrame.h
MediaAVPacket.cpp
MediaAVPacket.h
MediaAVFilter.cpp
MediaAVFilter.h
MediaPlayerPreview.cpp
MediaPlayerPreview.h
SDL2RenderWidget.cpp
SDL2RenderWidget.h
MediaPlayer.cpp
MediaPlayer.h
MediaFFex.h
)
#资源文件
qt6_add_resources(RCFILES res.qrc)
SET(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -static")
SET(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -static")
#WIN32
add_executable(${PROJECT_NAME} ${PROJECT_SOURCES} ${RCFILES})
#忽略多重定引用
target_link_options(${PROJECT_NAME} PUBLIC -Wl,--allow-multiple-definition)
target_link_libraries(
${PROJECT_NAME} PUBLIC PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets
${FFMPEG_LIBRARIES} -liconv
)