SparrowEngine/template.cmake

133 lines
2.6 KiB
CMake

# Variable that you need to define to use this template
# IS_LIBRARY, USE_SFML, USE_RENDERER, USE_INPUT, USE_BULLET,USE_OPENGL
#
# 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
#detect system
if(WIN32)
set(SYSTEM_LIB_PATH "win32")
else(WIN32)
set(SYSTEM_LIB_PATH "linux")
endif(WIN32)
#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
#create library and executable
if(IS_LIBRARY)
set(LIBRARY_NAME ${PROJECT_NAME})
set(EXECUTABLE_NAME "test${PROJECT_NAME}")
add_library(${LIBRARY_NAME} STATIC ${LIB_SRC_LIST} ${LIB_HEAD_LIST})
else()
set(EXECUTABLE_NAME "${PROJECT_NAME}")
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 "")
if(USE_SFML)
find_library(SFML_LIBRARY_WINDOW
NAMES
sfml-window
PATHS
${LIB_ROOT}
)
find_library(SFML_LIBRARY_SYSTEM
NAMES
sfml-system
PATHS
${LIB_ROOT}
)
LIST(APPEND DEP_LIST ${SFML_LIBRARY_WINDOW} ${SFML_LIBRARY_SYSTEM})
endif()
if(USE_RENDERER)
find_library(SPARROW_RENDERER_LIBRARY
NAMES
sparrowrenderer
PATHS
${LIB_ROOT}
)
LIST(APPEND DEP_LIST ${SPARROW_RENDERER_LIBRARY})
endif()
if(USE_INPUT)
find_library(SPARROW_INPUT_LIBRARY
NAMES
SparrowInput
PATHS
${LIB_ROOT}
)
LIST(APPEND DEP_LIST ${SPARROW_INPUT_LIBRARY})
endif()
if(USE_BULLET)
find_library(BULLET_COLLISION_LIBRARY
NAMES
BulletCollision
PATHS
${LIB_ROOT}
)
find_library(BULLET_DYNAMICS_LIBRARY
NAMES
BulletDynamics
PATHS
${LIB_ROOT}
)
find_library(LINEAR_MATH_LIBRARY
NAMES
LinearMath
PATHS
${LIB_ROOT}
)
LIST(APPEND DEP_LIST ${BULLET_COLLISION_LIBRARY} ${BULLET_DYNAMICS_LIBRARY} ${LINEAR_MATH_LIBRARY})
endif()
if(USE_OPENGL)
find_package(OpenGL REQUIRED)
LIST(APPEND DEP_LIST ${OPENGL_LIBRARIES})
endif()
if(IS_LIBRARY)
target_link_libraries(
${LIBRARY_NAME}
${DEP_LIST}
)
target_link_libraries(
${EXECUTABLE_NAME}
${LIBRARY_NAME}
)
else()
target_link_libraries(
${EXECUTABLE_NAME}
${DEP_LIST}
)
endif()