99 lines
2.0 KiB
CMake
99 lines
2.0 KiB
CMake
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")
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
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
|
|
)
|
|
|
|
# TESTING
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
googletest
|
|
URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
|
|
)
|
|
FetchContent_MakeAvailable(googletest)
|
|
|
|
enable_testing()
|
|
add_executable(tests
|
|
${SRC_DIR}/tests.cpp
|
|
${SRC_DIR}/VoxelSpace.cpp
|
|
${SRC_DIR}/VoxelSpace.h
|
|
)
|
|
|
|
target_link_libraries(tests
|
|
GTest::gtest_main
|
|
)
|
|
|
|
include(GoogleTest)
|
|
gtest_discover_tests(tests)
|