init
This commit is contained in:
100
CMakeLists.txt
Normal file
100
CMakeLists.txt
Normal file
@@ -0,0 +1,100 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(Eclipt VERSION 1.0.0 LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
option(ECLIPT_BUILD_SHARED "Build shared library" ON)
|
||||
option(ECLIPT_BUILD_EXAMPLES "Build examples" OFF)
|
||||
option(ECLIPT_USE_SDL2 "Use SDL2 for Linux display" ON)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
pkg_check_modules(FFMPEG REQUIRED
|
||||
libavformat
|
||||
libavcodec
|
||||
libavutil
|
||||
libswscale
|
||||
libswresample
|
||||
)
|
||||
|
||||
if(ECLIPT_USE_SDL2)
|
||||
pkg_check_modules(SDL2 REQUIRED sdl2)
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}/libEcliptPlayer/include
|
||||
${CMAKE_SOURCE_DIR}/platform/linux/include
|
||||
${FFMPEG_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
if(ECLIPT_USE_SDL2)
|
||||
include_directories(${SDL2_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
set(ECLIPT_SOURCES
|
||||
libEcliptPlayer/src/core/EcliptPlayer.cpp
|
||||
libEcliptPlayer/src/demuxer/FFmpegDemuxer.cpp
|
||||
libEcliptPlayer/src/decoder/FFmpegDecoder.cpp
|
||||
libEcliptPlayer/src/subtitle/SubtitleRenderer.cpp
|
||||
libEcliptPlayer/src/playlist/Playlist.cpp
|
||||
libEcliptPlayer/src/playlist/EPG.cpp
|
||||
)
|
||||
|
||||
set(ECLIPT_HEADERS
|
||||
libEcliptPlayer/include/eclipt/Config.h
|
||||
libEcliptPlayer/include/eclipt/Decoder.h
|
||||
libEcliptPlayer/include/eclipt/Demuxer.h
|
||||
libEcliptPlayer/include/eclipt/EcliptPlayer.h
|
||||
libEcliptPlayer/include/eclipt/EPG.h
|
||||
libEcliptPlayer/include/eclipt/Frame.h
|
||||
libEcliptPlayer/include/eclipt/Playlist.h
|
||||
libEcliptPlayer/include/eclipt/Subtitle.h
|
||||
)
|
||||
|
||||
add_library(EcliptPlayer ${ECLIPT_SOURCES} ${ECLIPT_HEADERS})
|
||||
target_link_libraries(EcliptPlayer PRIVATE ${FFMPEG_LIBRARIES})
|
||||
target_compile_options(EcliptPlayer PRIVATE ${FFMPEG_CFLAGS})
|
||||
|
||||
if(WIN32)
|
||||
target_compile_definitions(EcliptPlayer PRIVATE _CRT_SECURE_NO_WARNINGS)
|
||||
endif()
|
||||
|
||||
set_target_properties(EcliptPlayer PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
PUBLIC_HEADER "${ECLIPT_HEADERS}"
|
||||
)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
install(TARGETS EcliptPlayer
|
||||
LIBRARY DESTINATION lib
|
||||
PUBLIC_HEADER DESTINATION include/eclipt
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ECLIPT_USE_SDL2)
|
||||
set(LINUX_SOURCES
|
||||
platform/linux/src/EcliptLinux.cpp
|
||||
platform/linux/src/main.cpp
|
||||
)
|
||||
|
||||
add_executable(eclipt-linux ${LINUX_SOURCES})
|
||||
target_link_libraries(eclipt-linux PRIVATE
|
||||
EcliptPlayer
|
||||
${SDL2_LIBRARIES}
|
||||
pthread
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ECLIPT_BUILD_EXAMPLES)
|
||||
add_subdirectory(examples)
|
||||
endif()
|
||||
|
||||
message(STATUS "Eclipt version: ${PROJECT_VERSION}")
|
||||
message(STATUS "FFmpeg version: ${FFMPEG_VERSION}")
|
||||
message(STATUS "Build shared: ${ECLIPT_BUILD_SHARED}")
|
||||
message(STATUS "Use SDL2: ${ECLIPT_USE_SDL2}")
|
||||
Reference in New Issue
Block a user