63 lines
1.5 KiB
CMake
63 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.17)
|
|
project(zero_copy_example 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(zero_copy_example ${SOURCES} ${HEADERS})
|
|
|
|
# Enlazar librerías de Qt6, FFmpeg y CUDA
|
|
target_link_libraries(zero_copy_example PRIVATE
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
Qt6::Widgets
|
|
Qt6::OpenGL
|
|
Qt6::OpenGLWidgets
|
|
${AVCODEC_LIBRARIES}
|
|
${AVFORMAT_LIBRARIES}
|
|
${AVUTIL_LIBRARIES}
|
|
${CUDA_LIBRARY}
|
|
${CUDART_LIBRARY}
|
|
)
|
|
|
|
target_include_directories(zero_copy_example 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)
|