added new cmake setup, graphics, vendors, obj importer, etc.

This commit is contained in:
Daniel Ledda
2022-12-29 12:57:19 +01:00
parent 783f9ee055
commit e83185f011
30 changed files with 18711 additions and 116 deletions

View File

@@ -1,24 +1,79 @@
cmake_minimum_required(VERSION 3.24)
project(somaesque)
set(VENDOR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor")
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
#find_package(glfw3 3.3 REQUIRED)
#find_package(glm REQUIRED)
set(CMAKE_CXX_STANDARD 20)
#set(CMAKE_CXX_FLAGS -I/usr/include/SDL2)
add_executable(somaesque
main.cpp
VoxelSpace.cpp
VoxelSpace.h
SomaSolve.cpp
SomaSolve.h
option(GLFW_BUILD_DOCS OFF)
option(GLFW_BUILD_EXAMPLES OFF)
option(GLFW_BUILD_TESTS OFF)
option(GLFW_INSTALL OFF)
find_package(glfw3 3.3 REQUIRED)
find_package(glm REQUIRED)
# Glad
add_library(glad
STATIC
${VENDOR_DIR}/glad/glad.c
)
target_include_directories(glad
PUBLIC
${VENDOR_DIR}
)
# KHR
# STB
add_library(loaders
STATIC
${VENDOR_DIR}/loaders/tinyobj.cpp
${VENDOR_DIR}/loaders/stb_image.cpp
)
target_include_directories(loaders
PUBLIC
${VENDOR_DIR}
)
# somaesque
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME}
PRIVATE
${SRC_DIR}/main.cpp
${SRC_DIR}/VoxelSpace.cpp
${SRC_DIR}/VoxelSpace.h
${SRC_DIR}/SomaSolve.cpp
${SRC_DIR}/SomaSolve.h
${SRC_DIR}/gfx/Texture.h
${SRC_DIR}/gfx/Texture.cpp
${SRC_DIR}/gfx/Mesh.h
${SRC_DIR}/gfx/Mesh.cpp
${SRC_DIR}/gfx/Shader.h
${SRC_DIR}/gfx/Shader.cpp
${SRC_DIR}/gfx/geometry.h
${SRC_DIR}/gfx/geometry.cpp
)
target_link_libraries(${PROJECT_NAME}
PRIVATE
glfw
GL
X11
pthread
Xrandr
dl
glm::glm
glad
loaders
)
target_include_directories(somaesque
PUBLIC
${VENDOR_DIR}/KHR
)
#target_link_libraries(somaesque glfw GL X11 pthread Xrandr dl SDL2 glm::glm)
#target_include_directories(somaesque PRIVATE src/KHR src/glad)
# TESTING
include(FetchContent)
@@ -30,15 +85,14 @@ FetchContent_MakeAvailable(googletest)
enable_testing()
add_executable(tests
tests.cpp
VoxelSpace.cpp
VoxelSpace.h
${SRC_DIR}/tests.cpp
${SRC_DIR}/VoxelSpace.cpp
${SRC_DIR}/VoxelSpace.h
)
target_link_libraries(
tests
target_link_libraries(tests
GTest::gtest_main
)
)
include(GoogleTest)
gtest_discover_tests(tests)