Files
calyp/CMakeLists.txt
T

123 lines
4.7 KiB
CMake
Executable File

###
### CMakeLists for playuver
###
cmake_minimum_required( VERSION 2.8.9 )
######################################################################################
# Project Definition
######################################################################################
SET( PROJECT_NAME playuver )
SET( PLAYUVER_VERSION_MAJOR "0" )
SET( PLAYUVER_VERSION_MINOR "1" )
SET( PLAYUVER_VERSION_PATH "0" )
PROJECT( ${PROJECT_NAME} )
INCLUDE( cmake/CMakeMacros.cmake )
# Project directories
SET( SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/source )
SET( LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/source/lib )
SET( RSC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/resources )
SET( UI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ui )
SET( EXTERNAL_SRC ${CMAKE_CURRENT_SOURCE_DIR}/external )
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
# Find includes in corresponding build directories
SET( CMAKE_INCLUDE_CURRENT_DIR ON )
# Instruct CMake to run moc automatically when needed.
SET( CMAKE_AUTOMOC ON )
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${SRC_DIR}/app ${SRC_DIR}/lib )
FILE( GLOB SOURCES_FILES ${SRC_DIR}/app/*.cpp ${SRC_DIR}/lib/*.cpp )
FILE( GLOB FORMS_FILES ${UI_DIR}/*.ui )
FILE( GLOB RESOURCES_FILES ${RSC_DIR}/*.qrc )
# 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
######################################################################################
ADD_OPTION(USE_WERROR "Warnings as errors" OFF )
ADD_OPTION(USE_QT4 "Build with QT4" OFF )
ADD_OPTION(USE_OPENCV "Add OpenCV support" OFF )
ADD_OPTION(USE_PIXFC "Add PIXFC support" OFF )
ADD_OPTION(USE_FFMPEG "Add FFMPEG support" OFF )
######################################################################################
# Dependencies
######################################################################################
INCLUDE( cmake/LibQT.cmake )
IF( USE_OPENCV )
FIND_PACKAGE( OpenCV )
IF( NOT OpenCV_FOUND)
SET(USE_OPENCV FALSE)
ELSE()
LIST(APPEND LINKER_LIBS ${OpenCV_LIBRARIES} )
ENDIF()
ENDIF()
INCLUDE( cmake/LibPixfc.cmake )
INCLUDE( cmake/LibFFmpeg.cmake )
######################################################################################
# PlaYUVer modules build
######################################################################################
SET( MODULES_DIR ${SRC_DIR}/modules )
INCLUDE_DIRECTORIES( ${MODULES_DIR} )
FILE( GLOB ModuleCMakeFiles cmake/Module*.cmake )
INCLUDE( ${ModuleCMakeFiles} )
######################################################################################
# Main config.h
######################################################################################
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" )
SET( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g" )
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3" )
IF( USE_WERROR )
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
ENDIF()
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" )
ADD_EXECUTABLE( ${PROJECT_NAME} ${SOURCES_FILES} ${HEADERS_MOC_FILES} ${FORMS_HEADERS_FILES} ${RESOURCES_RCC_FILES} )
TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${PLAYUVER_LIBS} ${MODULES_LIBS} ${LINKER_LIBS} )
IF( NOT USE_QT4)
QT5_USE_MODULES( ${PROJECT_NAME} ${CURR_QT_MODULES} )
ENDIF()
INCLUDE(cmake/Install.cmake)
######################################################################################
# Final information dump
######################################################################################
status("Configuration:")
status(" Build type:" ${CMAKE_BUILD_TYPE} )
status(" Build flags:" "${CMAKE_CXX_FLAGS}" )
status(" Warnings as errors:" USE_WERROR THEN YES ELSE NO)
status("Dependencies:")
status(" QT:" USE_QT4 THEN "QT4" ELSE "QT5" )
status(" OpenCV:" USE_OPENCV THEN YES ELSE NO)
status(" FFMPEG:" USE_FFMPEG THEN YES ELSE NO)
status(" Pixfc-sse:" USE_PIXFC THEN YES ELSE NO)