NBEngine/engine/NBGraphics/CMakeLists.txt
2026-08-20 08:12:55 -05:00

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()