zero_copy_video_player/CMakeLists.txt
2026-08-05 08:56:00 -03:00

63 lines
1.5 KiB
CMake

cmake_minimum_required(VERSION 3.17)
project(crt_player_cuda VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
# Buscar paquetes de Qt6 requeridos
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets OpenGL OpenGLWidgets)
# Buscar librerías de FFmpeg mediante PkgConfig
find_package(PkgConfig REQUIRED)
pkg_check_modules(AVCODEC REQUIRED libavcodec)
pkg_check_modules(AVFORMAT REQUIRED libavformat)
pkg_check_modules(AVUTIL REQUIRED libavutil)
# Buscar librerías de CUDA directamente (no requiere nvcc)
find_library(CUDA_LIBRARY NAMES cuda REQUIRED)
find_library(CUDART_LIBRARY NAMES cudart REQUIRED)
# Definir fuentes
set(SOURCES
main.cpp
mainwindow.cpp
glwidget.cpp
videodecoder.cpp
)
set(HEADERS
mainwindow.h
glwidget.h
videodecoder.h
)
# Definir ejecutable
add_executable(crt_player_cuda ${SOURCES} ${HEADERS})
# Enlazar librerías de Qt6, FFmpeg y CUDA
target_link_libraries(crt_player_cuda PRIVATE
Qt6::Core
Qt6::Gui
Qt6::Widgets
Qt6::OpenGL
Qt6::OpenGLWidgets
${AVCODEC_LIBRARIES}
${AVFORMAT_LIBRARIES}
${AVUTIL_LIBRARIES}
${CUDA_LIBRARY}
${CUDART_LIBRARY}
)
target_include_directories(crt_player_cuda PRIVATE
${AVCODEC_INCLUDE_DIRS}
${AVFORMAT_INCLUDE_DIRS}
${AVUTIL_INCLUDE_DIRS}
)
# Copiar archivos de shaders al directorio de compilación
configure_file(shader.vert shader.vert COPYONLY)
configure_file(shader.frag shader.frag COPYONLY)