diff --git a/CMakeLists.txt b/CMakeLists.txt index 7343897..ab33339 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,14 +15,4 @@ set(USE_RENDERER True) set(USE_INPUT True) set(USE_BULLET True) -list(APPEND INCLUDE_PATHS_EXTENSION - /bullet -) - -list(APPEND EXTRA_INCLUDE - ${PROJECT_SOURCE_DIR}/../sparrowinput - ${PROJECT_SOURCE_DIR}/../SparrowInput - ${PROJECT_SOURCE_DIR}/../sparrowrenderer/src -) - include(template.cmake) diff --git a/template.cmake b/template.cmake index 45a2416..f9ac78c 100644 --- a/template.cmake +++ b/template.cmake @@ -1,79 +1,123 @@ # Variable that you need to define to use this template -# IS_LIBRARY, USE_SFML, USE_RENDERER, USE_INPUT, USE_BULLET,USE_OPENGL +# 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 # -# Variable available to extend include_dir locations -# INCLUDE_PATHS_EXTENSION -# EXTRA_INCLUDE +# If you want to specify a supplementary folder for include, use : +# EXTRA_INCLUDE_PATHS -#detect system +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(SYSTEM_LIB_PATH "win32") -else(WIN32) - set(SYSTEM_LIB_PATH "linux") -endif(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_ROOT ${DEPENDENCIES_ROOT}/lib/${SYSTEM_LIB_PATH}) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_ROOT}) #for SHARED -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_ROOT}) #for STATIC +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(IS_LIBRARY) +if(LIB_SRC_LIST) + set(IS_LIBRARY True) set(LIBRARY_NAME ${PROJECT_NAME}) - set(EXECUTABLE_NAME "test${PROJECT_NAME}") - add_library(${LIBRARY_NAME} STATIC ${LIB_SRC_LIST} ${LIB_HEAD_LIST}) -else() + 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_executable(${EXECUTABLE_NAME} ${EXEC_SRC_LIST}) + add_definitions(-std=c++11) -LIST(APPEND INCLUDE_PATHS ${INCLUDE_ROOT}) - -foreach(EXTENSION ${INCLUDE_PATHS_EXTENSION}) - LIST(APPEND INCLUDE_PATHS ${INCLUDE_ROOT}${EXTENSION} " ") -endforeach() - -include_directories( - ${INCLUDE_PATHS} - ${EXTRA_INCLUDE} -) - #find libraries -set(DEP_LIST "") +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_ROOT} + ${LIB_PATHS} ) find_library(SFML_LIBRARY_SYSTEM NAMES sfml-system PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) - LIST(APPEND DEP_LIST ${SFML_LIBRARY_WINDOW} ${SFML_LIBRARY_SYSTEM}) + + 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 + SparrowRenderer PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) - LIST(APPEND DEP_LIST ${SPARROW_RENDERER_LIBRARY}) + LIST(APPEND INCLUDE_PATHS "\n" ${PROJECT_SOURCE_DIR}/../sparrowrenderer/src) + LIST(APPEND LIB_DEPENDENCIES_LIST ${SPARROW_RENDERER_LIBRARY}) endif() if(USE_INPUT) @@ -81,9 +125,10 @@ if(USE_INPUT) NAMES SparrowInput PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) - LIST(APPEND DEP_LIST ${SPARROW_INPUT_LIBRARY}) + LIST(APPEND INCLUDE_PATHS "\n" ${PROJECT_SOURCE_DIR}/../sparrowinput/src) + LIST(APPEND LIB_DEPENDENCIES_LIST ${SPARROW_INPUT_LIBRARY}) endif() if(USE_BULLET) @@ -91,42 +136,81 @@ if(USE_BULLET) NAMES BulletCollision PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) find_library(BULLET_DYNAMICS_LIBRARY NAMES BulletDynamics PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) find_library(LINEAR_MATH_LIBRARY NAMES LinearMath PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) - LIST(APPEND DEP_LIST ${BULLET_COLLISION_LIBRARY} ${BULLET_DYNAMICS_LIBRARY} ${LINEAR_MATH_LIBRARY}) + 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) - LIST(APPEND DEP_LIST ${OPENGL_LIBRARIES}) + find_package(OpenGL REQUIRED) + if(OPENGL_FOUND) + LIST(APPEND LIB_DEPENDENCIES_LIST ${OPENGL_LIBRARIES}) + endif() endif() -if(IS_LIBRARY) +# 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} - ${DEP_LIST} + ${LIB_DEPENDENCIES_LIST} ) + if(EXEC_SRC_LIST) + target_link_libraries( + ${EXECUTABLE_NAME} + ${LIBRARY_NAME} + ) + endif() +elseif(EXEC_SRC_LIST) target_link_libraries( ${EXECUTABLE_NAME} - ${LIBRARY_NAME} - ) -else() - target_link_libraries( - ${EXECUTABLE_NAME} - ${DEP_LIST} + ${LIB_DEPENDENCIES_LIST} ) endif()