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