### ### CMakeLists for playuver ### cmake_minimum_required( VERSION 2.8.9 ) ###################################################################################### # Project Definition ###################################################################################### IF(UNIX) EXECUTE_PROCESS(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE DAY) string(STRIP ${DAY} DAY) ENDIF(UNIX) SET( PROJECT_NAME "playuver" ) SET( PLAYUVER_VERSION_MAJOR "0" ) SET( PLAYUVER_VERSION_MINOR "0" ) SET( PLAYUVER_VERSION_PATCH "9999" ) #SET( PLAYUVER_VERSION_PATCH ${DAY} ) SET( PLAYUVER_VERSION "${PLAYUVER_VERSION_MAJOR}.${PLAYUVER_VERSION_MINOR}.${PLAYUVER_VERSION_PATCH}") 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 ${RSC_DIR}/*.rc ) # 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 "" ) ADD_DEFINITIONS( "-DPLAYUVER" ) ###################################################################################### # Variables ###################################################################################### ADD_OPTION(PLAYUVER_WERROR "Warnings as errors" OFF ) ADD_OPTION(PLAYUVER_THREADED_MODULES "Warnings as errors" ON ) ADD_OPTION(USE_QT4 "Build with QT4" OFF ) ADD_OPTION(USE_OPENCV "Add OpenCV support" OFF ) ADD_OPTION(USE_FFMPEG "Add FFMPEG support" OFF ) ADD_OPTION(USE_FERVOR "Add Fervor support" OFF ) ADD_OPTION(USE_PIXFC "Add PIXFC support" OFF ) ###################################################################################### # Dependencies ###################################################################################### INCLUDE( cmake/LibFervor.cmake ) INCLUDE( cmake/LibQT.cmake ) INCLUDE( cmake/LibOpenCV.cmake ) INCLUDE( cmake/LibFFmpeg.cmake ) INCLUDE( cmake/LibPixfc.cmake ) ###################################################################################### # PlaYUVer modules build ###################################################################################### SET( MODULES_DIR ${SRC_DIR}/modules ) INCLUDE_DIRECTORIES( ${MODULES_DIR} ) FILE( GLOB ModuleCMakeFiles cmake/Module*.cmake ) file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/ModulesListMacro.h "// This files defines the macro to \n" "// define a list of modules\n" "#ifndef __MODULESLISTMACRO_H__\n#define __MODULESLISTMACRO_H__\n" "#define REGISTER_ALL_MODULES ") file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "// This files add the header files of each module\n" "#ifndef __MODULESLISTHEADER_H__\n#define __MODULESLISTHEADER_H__\n" ) INCLUDE( ${ModuleCMakeFiles} ) file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListMacro.h "\n#endif // __MODULESLISTMACRO_H__\n" ) file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#endif // __MODULESLISTHEADER_H__\n" ) ###################################################################################### # 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( PLAYUVER_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(" Fervor:" USE_FERVOR THEN YES ELSE NO) status(" Pixfc-sse:" USE_PIXFC THEN YES ELSE NO) status("Features:") status(" Modules List:" "${MODULES_LIST}" )