From 246744b72a9ad6b9270cecaa26bd0c9213770b58 Mon Sep 17 00:00:00 2001 From: Lendemor Date: Mon, 7 Mar 2016 20:29:45 +0100 Subject: [PATCH] added include_paths management --- template.cmake | 171 +++++++++++++++++++++++++++++++++----------- test/CMakeLists.txt | 7 +- test/test.cmake | 34 --------- 3 files changed, 134 insertions(+), 78 deletions(-) diff --git a/template.cmake b/template.cmake index e39d728..46eb226 100644 --- a/template.cmake +++ b/template.cmake @@ -1,65 +1,108 @@ -#detect system +# 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 -if(${CMAKE_DEBUG_TYPE} MATCHES "Debug") - set(LIB_FOLDER "libDebug") -else() - set(LIB_FOLDER "libRelease") -endif() +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_FOLDER ${LIB_FOLDER}/win32) + set(LIB_DEBUG_FOLDER "libDebug/win32") + set(LIB_RELEASE_FOLDER "libRelease/win32") elseif(UNIX) if(${CMAKE_SYSTEM_VERSION} MATCHES "i686") - set(LIB_FOLDER ${LIB_FOLDER}/i686) + set(LIB_DEBUG_FOLDER "libDebug/i686") + set(LIB_RELEASE_FOLDER "libRelease/i686") elseif(${CMAKE_SYSTEM_VERSION} MATCHES "x86_64") - set(LIB_FOLDER ${LIB_FOLDER}/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_FOLDER}) -message(${LIB_ROOT}) +set(LIB_DEBUG_PATH ${DEPENDENCIES_ROOT}/${LIB_DEBUG_FOLDER}) +set(LIB_RELEASE_PATH ${DEPENDENCIES_ROOT}/${LIB_RELEASE_FOLDER}) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_ROOT}) #for SHARED -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_ROOT}) #for STATIC +if(${CMAKE_DEBUG_TYPE} MATCHES "Debug") + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_DEBUG_FOLDER}) #for STATIC + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_DEBUG_FOLDER}) #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_FOLDER}) #for STATIC + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_RELEASE_FOLDER}) #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}) -else() + if(EXEC_SRC_LIST) + set(EXECUTABLE_NAME "test${PROJECT_NAME}") + add_executable(${EXECUTABLE_NAME} ${EXEC_SRC_LIST}) + endif() +elseif(EXEC_SRC_LIST) set(EXECUTABLE_NAME "${PROJECT_NAME}") -endif() add_executable(${EXECUTABLE_NAME} ${EXEC_SRC_LIST}) +else() + message(WARNING "NO SOURCE FILE PROVIDED") +endif() + add_definitions(-std=c++11) -include_directories( - ${INCLUDE_ROOT} -) - #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} + ) + LIST(APPEND LIB_DEPENDENCIES_LIST ${SFML_LIBRARY_WINDOW} ${SFML_LIBRARY_SYSTEM} ${SFML_LIBRARY_AUDIO} ${SFML_LIBRARY_GRAPHICS) endif() if(USE_RENDERER) @@ -67,9 +110,9 @@ if(USE_RENDERER) NAMES sparrowrenderer PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) - LIST(APPEND DEP_LIST SPARROW_RENDERER_LIBRARY) + LIST(APPEND LIB_DEPENDENCIES_LIST ${SPARROW_RENDERER_LIBRARY}) endif() if(USE_INPUT) @@ -77,9 +120,9 @@ if(USE_INPUT) NAMES SparrowInput PATHS - ${LIB_ROOT} + ${LIB_PATHS} ) - LIST(APPEND DEP_LIST SPARROW_INPUT_LIBRARY) + LIST(APPEND LIB_DEPENDENCIES_LIST ${SPARROW_INPUT_LIBRARY}) endif() if(USE_BULLET) @@ -87,37 +130,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(IS_LIBRARY) - target_link_libraries( - ${LIBRARY_NAME} - ${DEP_LIST} +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( - ${EXECUTABLE_NAME} ${LIBRARY_NAME} - ) -else() + ${LIB_DEPENDENCIES_LIST} + ) + if(EXEC_SRC_LIST) + target_link_libraries( + ${EXECUTABLE_NAME} + ${LIBRARY_NAME} + ) + endif() +elseif(EXEC_SRC_LIST) target_link_libraries( ${EXECUTABLE_NAME} - ${DEP_LIST} + ${LIB_DEPENDENCIES_LIST} ) -endif() \ No newline at end of file +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index de7e898..4263e96 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,3 +1,6 @@ -cmake_minimum_required(VERSION 3.0) -include(test.cmake) \ No newline at end of file + + +include(test.cmake) + +cmake_minimum_required(VERSION 2.8) \ No newline at end of file diff --git a/test/test.cmake b/test/test.cmake index 697e467..e69de29 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -1,34 +0,0 @@ -if(WIN32) - set(LIB_DEBUG_FOLDER "libDebug/win32") - set(LIB_RELEASE_FOLDER "libRelease/win32") -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) - - -if(${CMAKE_DEBUG_TYPE} MATCHES "Debug") - list(APPEND LIB_PATHS ${DEPENDENCIES_ROOT}/${LIB_DEBUG_FOLDER}) - list(APPEND LIB_PATHS "\n" ${DEPENDENCIES_ROOT}/${LIB_RELEASE_FOLDER}) -else() - list(APPEND LIB_PATHS ${DEPENDENCIES_ROOT}/${LIB_RELEASE_FOLDER}) -endif() - - -find_library(SFML_LIBRARY_WINDOW - NAMES - sfml-window - PATHS - ${LIB_PATHS} - ) - -message(${SFML_LIBRARY_WINDOW})