108 lines
3.1 KiB
CMake
108 lines
3.1 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(NBGraphics VERSION 0.1)
|
|
|
|
set(GLAD_PATH ${NBENGINE_ROOT}/../glad/)
|
|
set(STBIMAGE_PATH ${NBENGINE_ROOT}/../stbi_image)
|
|
get_filename_component(GLAD_PATH ${GLAD_PATH} ABSOLUTE)
|
|
get_filename_component(STBIMAGE_PATH ${STBIMAGE_PATH} ABSOLUTE)
|
|
|
|
set(CMAKE_PREFIX_PATH
|
|
"${CMAKE_PREFIX_PATH}"
|
|
"C:/Program Files (x86)/GLFW/lib/cmake/glfw3/"
|
|
)
|
|
find_package(OpenGL REQUIRED)
|
|
find_package(glfw3 REQUIRED)
|
|
|
|
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
|
if (NB_BUILD_TESTS)
|
|
set(GLFW_BUILD_TESTS ON CACHE BOOL "" FORCE)
|
|
else()
|
|
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
endif()
|
|
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
|
|
toAbsolutePath(NB_GRAPHICS_SOURCE
|
|
./src/Buffers.cpp
|
|
./src/FrameBuffers.cpp
|
|
./src/Image.cpp
|
|
./src/OGLObjects.cpp
|
|
./src/ProgramPipeline.cpp
|
|
./src/Textures.cpp
|
|
./src/VertexArray.cpp
|
|
./src/Window.cpp
|
|
)
|
|
toAbsolutePath(NB_GRAPHICS_INCLUDE
|
|
./include/NBGraphics/Buffers.hpp
|
|
./include/NBGraphics/Camera.hpp
|
|
./include/NBGraphics/Draw.hpp
|
|
./include/NBGraphics/FrameBuffers.hpp
|
|
./include/NBGraphics/GLLoad.hpp
|
|
./include/NBGraphics/Image.hpp
|
|
./include/NBGraphics/OGLObjects.hpp
|
|
./include/NBGraphics/ProgramPipeline.hpp
|
|
./include/NBGraphics/Textures.hpp
|
|
./include/NBGraphics/VertexArray.hpp
|
|
./include/NBGraphics/Window.hpp
|
|
)
|
|
|
|
set(NB_GRAPHICS_SOURCE ${NB_GRAPHICS_SOURCE} PARENT_SCOPE)
|
|
set(NB_GRAPHICS_INCLUDE ${NB_GRAPHICS_INCLUDE} PARENT_SCOPE)
|
|
|
|
add_library(NBGraphics
|
|
${NB_GRAPHICS_SOURCE}
|
|
${GLAD_PATH}/src/glad.c
|
|
)
|
|
add_library(NBEngine::Graphics ALIAS NBGraphics)
|
|
target_link_libraries(NBGraphics
|
|
PUBLIC glfw
|
|
PUBLIC NBCore
|
|
)
|
|
get_target_property(GLFW_INTERFACE_INCLUDES glfw INTERFACE_INCLUDE_DIRECTORIES)
|
|
#include_directories(${GLFW_INTERFACE_INCLUDES})
|
|
target_include_directories(NBGraphics
|
|
PUBLIC "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
|
|
PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
|
PUBLIC "${STBIMAGE_PATH}"
|
|
PUBLIC "${GLAD_PATH}/include"
|
|
)
|
|
|
|
if (NBENGINE_INSTALL)
|
|
message("Installing NBGraphics to ${CMAKE_INSTALL_PREFIX}")
|
|
include(GNUInstallDirs)
|
|
include(CMakePackageConfigHelpers)
|
|
install(
|
|
TARGETS NBGraphics
|
|
EXPORT NBGraphicsTargets
|
|
)
|
|
install(
|
|
DIRECTORY "${PROJECT_SOURCE_DIR}/include/NBGraphics"
|
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
|
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
|
|
)
|
|
install(
|
|
EXPORT NBGraphicsTargets
|
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake
|
|
NAMESPACE NBEngine::
|
|
)
|
|
configure_package_config_file(
|
|
"NBGraphicsConfig.cmake.in"
|
|
"NBGraphicsConfig.cmake"
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake
|
|
PATH_VARS CMAKE_INSTALL_LIBDIR
|
|
)
|
|
write_basic_package_version_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NBGraphicsConfigVersion.cmake"
|
|
COMPATIBILITY AnyNewerVersion
|
|
)
|
|
install(FILES
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NBGraphicsConfig.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NBGraphicsConfigVersion.cmake"
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/cmake"
|
|
)
|
|
endif()
|
|
|
|
if (NB_BUILD_TESTS)
|
|
add_subdirectory(./tests)
|
|
endif()
|
|
|