154 lines
5.5 KiB
CMake
154 lines
5.5 KiB
CMake
###
|
|
### CMakeLists for playuver
|
|
###
|
|
|
|
cmake_minimum_required( VERSION 2.8.9 )
|
|
|
|
######################################################################################
|
|
# Project Definition
|
|
######################################################################################
|
|
|
|
SET( PROJECT_NAME "playuver" )
|
|
|
|
PROJECT( ${PROJECT_NAME} )
|
|
SET( PLAYUVER_VERSION_MAJOR "0" )
|
|
SET( PLAYUVER_VERSION_MINOR "5" )
|
|
SET( PLAYUVER_VERSION_PATCH "0" )
|
|
SET( PLAYUVER_VERSION "${PLAYUVER_VERSION_MAJOR}.${PLAYUVER_VERSION_MINOR}.${PLAYUVER_VERSION_PATCH}")
|
|
|
|
######################################################################################
|
|
# CMake Definitions
|
|
######################################################################################
|
|
|
|
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake )
|
|
INCLUDE(FeatureSummary)
|
|
|
|
# must go before the project command
|
|
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
|
|
IF(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
|
|
SET_PROPERTY( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
|
|
ENDIF()
|
|
SET( CMAKE_CXX_FLAGS "" )
|
|
|
|
|
|
######################################################################################
|
|
# Variables
|
|
######################################################################################
|
|
|
|
OPTION( USE_FERVOR "Add Fervor support" OFF )
|
|
OPTION( PLAYUVER_LONGVERSIONNAME "Use long version name in deb" OFF )
|
|
OPTION( PLAYUVER_WERROR "Warnings as errors" OFF )
|
|
OPTION( PLAYUVER_THREADED_MODULES "Use threads for modules" OFF )
|
|
OPTION( USE_QT4 "Build with QT4" OFF )
|
|
|
|
#####################################################################################
|
|
# Qt library
|
|
######################################################################################
|
|
|
|
IF( USE_QT4 )
|
|
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT4" )
|
|
FIND_PACKAGE( Qt4 REQUIRED COMPONENTS QtCore QtGui QtDBus QtNetwork QtWebKit )
|
|
|
|
SET( USE_QTDBUS TRUE )
|
|
|
|
IF( NOT QT4_FOUND )
|
|
SET(USE_QT4 FALSE)
|
|
ELSE()
|
|
INCLUDE( ${QT_USE_FILE} )
|
|
ADD_DEFINITIONS( ${QT_DEFINITIONS} )
|
|
SET( QT_LINKER_LIBS ${QT_LIBRARIES} )
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF( NOT USE_QT4 )
|
|
|
|
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT5" )
|
|
|
|
FIND_PACKAGE( Qt5 REQUIRED COMPONENTS Core Gui Widgets PrintSupport )
|
|
FIND_PACKAGE( Qt5DBus )
|
|
|
|
|
|
LIST(APPEND QT_LINKER_LIBS Qt5::Core Qt5::Gui Qt5::Widgets Qt5::PrintSupport )
|
|
LIST(APPEND QT_MODULES Core Gui Widgets )
|
|
IF( ${Qt5DBus_FOUND} )
|
|
SET( USE_QTDBUS ${Qt5DBus_FOUND} )
|
|
LIST(APPEND QT_LINKER_LIBS Qt5::DBus )
|
|
LIST(APPEND QT_MODULES DBus )
|
|
ENDIF()
|
|
|
|
INCLUDE_DIRECTORIES( ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
|
|
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}" )
|
|
|
|
ENDIF()
|
|
|
|
######################################################################################
|
|
# Dependencies
|
|
######################################################################################
|
|
|
|
FIND_PACKAGE(Boost COMPONENTS program_options )
|
|
SET_PACKAGE_PROPERTIES(Boost PROPERTIES URL "http://www.boost.org" DESCRIPTION "Boost library support" TYPE REQUIRED)
|
|
|
|
OPTION( USE_OPENCV "Add OpenCV support" ON )
|
|
IF( USE_OPENCV )
|
|
FIND_PACKAGE( OpenCV )
|
|
SET(USE_OPENCV ${OpenCV_FOUND})
|
|
ENDIF()
|
|
SET_PACKAGE_PROPERTIES(OpenCV PROPERTIES URL "http://opencv.willowgarage.com" DESCRIPTION "OpenCV library support in PlaYUVerFrame" TYPE OPTIONAL)
|
|
|
|
OPTION( USE_FFMPEG "Add FFMPEG support" ON )
|
|
IF( USE_FFMPEG )
|
|
FIND_PACKAGE( FFmpeg )
|
|
SET(USE_FFMPEG ${FFMPEG_FOUND})
|
|
ENDIF()
|
|
SET_PACKAGE_PROPERTIES(FFmpeg PROPERTIES URL "http://ffmpeg.org/" DESCRIPTION "Libav library support in PlaYUVerStream" TYPE OPTIONAL)
|
|
|
|
ADD_FEATURE_INFO(Fervor USE_FERVOR "Fervor lib includes check for updates feature.")
|
|
ADD_FEATURE_INFO(WErrors PLAYUVER_WERROR "Warnings as errors" )
|
|
|
|
IF( WIN32 )
|
|
INCLUDE( cmake/Win32.cmake )
|
|
ENDIF()
|
|
|
|
######################################################################################
|
|
# Configuration
|
|
######################################################################################
|
|
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h )
|
|
|
|
######################################################################################
|
|
# Target App
|
|
######################################################################################
|
|
IF (NOT CMAKE_BUILD_TYPE )
|
|
MESSAGE(STATUS "No build type selected, default to Release")
|
|
SET(CMAKE_BUILD_TYPE "Release")
|
|
ENDIF()
|
|
|
|
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
|
|
#
|
|
# IF( PLAYUVER_WERROR )
|
|
# SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
|
|
# ENDIF()
|
|
|
|
SET( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g" )
|
|
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2" )
|
|
|
|
ADD_SUBDIRECTORY( lib )
|
|
ADD_SUBDIRECTORY( modules )
|
|
ADD_SUBDIRECTORY( tools )
|
|
ADD_SUBDIRECTORY( app )
|
|
|
|
|
|
|
|
|
|
######################################################################################
|
|
# Final information dump
|
|
######################################################################################
|
|
MESSAGE("")
|
|
MESSAGE( STATUS "${PROJECT_NAME} INFORMATION" )
|
|
MESSAGE( STATUS "Version: " "${PLAYUVER_VERSION}" )
|
|
MESSAGE( STATUS "Configuration:" )
|
|
MESSAGE( STATUS " Build type:" "${CMAKE_BUILD_TYPE}" )
|
|
MESSAGE( STATUS " Build flags:" "${CMAKE_CXX_FLAGS}" )
|
|
|
|
|
|
FEATURE_SUMMARY(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
|