# Variable that you need to define to use this template # USE_SFML, USE_RENDERER, USE_INPUT, USE_BULLET, USE_OPENGL, USE_QT5 # # Container for list of file to be compiled : # LIB_SRC_LIST, LIB_HEAD_LIST, EXEC_SRC_LIST, EXEC_HEAD_LIST # # If you want to specify a supplementary folder for include, use : # EXTRA_INCLUDE_PATHS cmake_minimum_required(VERSION 2.8) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) #detect system and version if(WIN32) set(LIB_DEBUG_FOLDER "libDebug/mingw32") set(LIB_RELEASE_FOLDER "libRelease/mingw32") elseif(UNIX) if(${CMAKE_SYSTEM_VERSION} MATCHES "i686") set(LIB_DEBUG_FOLDER "libDebug/i686") set(LIB_RELEASE_FOLDER "libRelease/i686") elseif(${CMAKE_SYSTEM_VERSION} MATCHES "x86_64") set(LIB_DEBUG_FOLDER "libDebug/x86_64") set(LIB_RELEASE_FOLDER "libRelease/x86_64") endif() endif() #set dependencies paths set(DEPENDENCIES_ROOT ${PROJECT_SOURCE_DIR}/../cpp_dependencies) set(INCLUDE_ROOT ${DEPENDENCIES_ROOT}/include) set(LIB_DEBUG_PATH ${DEPENDENCIES_ROOT}/${LIB_DEBUG_FOLDER}) set(LIB_RELEASE_PATH ${DEPENDENCIES_ROOT}/${LIB_RELEASE_FOLDER}) if(${CMAKE_BUILD_TYPE} MATCHES "Debug") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_DEBUG_PATH}) #for STATIC set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_DEBUG_PATH}) #for SHARED list(APPEND LIB_PATHS ${LIB_DEBUG_PATH}) list(APPEND LIB_PATHS "\n" ${LIB_RELEASE_PATH}) else() set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_RELEASE_PATH}) #for STATIC set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_RELEASE_PATH}) #for SHARED list(APPEND LIB_PATHS ${LIB_RELEASE_PATH}) endif() #create library and executable if(LIB_SRC_LIST) set(IS_LIBRARY True) set(LIBRARY_NAME ${PROJECT_NAME}) add_library(${LIBRARY_NAME} STATIC ${LIB_SRC_LIST} ${RESOURCES_FILES}) if(EXEC_SRC_LIST) set(EXECUTABLE_NAME "test${PROJECT_NAME}") add_executable(${EXECUTABLE_NAME} ${EXEC_SRC_LIST} ${RESOURCES_FILES}) endif() elseif(EXEC_SRC_LIST) set(EXECUTABLE_NAME "${PROJECT_NAME}") add_executable(${EXECUTABLE_NAME} ${EXEC_SRC_LIST} ${RESOURCES_FILES}) else() message(WARNING "NO SOURCE FILE PROVIDED") endif() add_definitions(-std=c++11) #find libraries set(LIB_DEPENDENCIES_LIST "") set(INCLUDE_PATHS ${INCLUDE_ROOT}) # not used for now # foreach(EXTENSION ${INCLUDE_PATHS_EXTENSION}) # LIST(APPEND INCLUDE_PATHS ${INCLUDE_ROOT}${EXTENSION} " ") # endforeach() # TODO: Complete SFML if(USE_SFML) find_library(SFML_LIBRARY_WINDOW NAMES sfml-window PATHS ${LIB_PATHS} ) find_library(SFML_LIBRARY_SYSTEM NAMES sfml-system PATHS ${LIB_PATHS} ) find_library(SFML_LIBRARY_AUDIO NAMES sfml-audio PATHS ${LIB_PATHS} ) find_library(SFML_LIBRARY_GRAPHICS NAMES sfml-graphics PATHS ${LIB_PATHS} ) add_definitions(-DSFML_STATIC) LIST(APPEND LIB_DEPENDENCIES_LIST ${SFML_LIBRARY_AUDIO} ${SFML_LIBRARY_GRAPHICS} ${SFML_LIBRARY_WINDOW} ${SFML_LIBRARY_SYSTEM}) endif() if(USE_RENDERER) find_library(SPARROW_RENDERER_LIBRARY NAMES SparrowRenderer PATHS ${LIB_PATHS} ) LIST(APPEND INCLUDE_PATHS "\n" ${PROJECT_SOURCE_DIR}/../sparrowrenderer/src) LIST(APPEND LIB_DEPENDENCIES_LIST ${SPARROW_RENDERER_LIBRARY}) endif() if(USE_INPUT) find_library(SPARROW_INPUT_LIBRARY NAMES SparrowInput PATHS ${LIB_PATHS} ) LIST(APPEND INCLUDE_PATHS "\n" ${PROJECT_SOURCE_DIR}/../sparrowinput/src) LIST(APPEND LIB_DEPENDENCIES_LIST ${SPARROW_INPUT_LIBRARY}) endif() if(USE_BULLET) find_library(BULLET_COLLISION_LIBRARY NAMES BulletCollision PATHS ${LIB_PATHS} ) find_library(BULLET_DYNAMICS_LIBRARY NAMES BulletDynamics PATHS ${LIB_PATHS} ) find_library(LINEAR_MATH_LIBRARY NAMES LinearMath PATHS ${LIB_PATHS} ) LIST(APPEND LIB_DEPENDENCIES_LIST ${BULLET_COLLISION_LIBRARY} ${BULLET_DYNAMICS_LIBRARY} ${LINEAR_MATH_LIBRARY}) LIST(APPEND INCLUDE_PATHS "\n" ${INCLUDE_ROOT}/bullet) endif() if(USE_OPENGL) find_package(OpenGL REQUIRED) if(OPENGL_FOUND) LIST(APPEND LIB_DEPENDENCIES_LIST ${OPENGL_LIBRARIES}) endif() endif() # TODO: Complete QT5 if(USE_QT5) if(${QT_MODULE} MATCHES "core") endif() if(${QT_MODULE} MATCHES "gui") endif() if(${QT_MODULE} MATCHES "opengl") find_package(Qt5OpenGL REQUIRED) if(QT5OPENGL_FOUND) LIST(APPEND LIB_DEPENDENCIES_LIST ${Qt5OpenGL_LIBRARIES}) add_definitions(${Qt5OpenGL_DEFINITIONS}) LIST(APPEND INCLUDE_PATHS "\n" ${Qt5OpenGL_INCLUDES}) endif() endif() if(${QT_MODULE} MATCHES "widgets") find_package(Qt5Widgets REQUIRED) if(QT5WIDGETS_FOUND) LIST(APPEND LIB_DEPENDENCIES_LIST ${Qt5Widgets_LIBRARIES}) add_definitions(${Qt5Widgets_DEFINITIONS}) LIST(APPEND INCLUDE_PATHS "\n" ${Qt5Widgets_INCLUDES}) endif() endif() if(${QT_MODULE} MATCHES "network") endif() endif() include_directories( ${INCLUDE_PATHS} ${EXTRA_INCLUDE} ) if(LIB_SRC_LIST) target_link_libraries( ${LIBRARY_NAME} ${LIB_DEPENDENCIES_LIST} ) if(EXEC_SRC_LIST) target_link_libraries( ${EXECUTABLE_NAME} ${LIBRARY_NAME} ) endif() elseif(EXEC_SRC_LIST) target_link_libraries( ${EXECUTABLE_NAME} ${LIB_DEPENDENCIES_LIST} ) endif()