2025-03-12 18:54:23 +01:00
|
|
|
cmake_minimum_required(VERSION 3.23)
|
|
|
|
|
|
2026-02-08 12:09:02 +01:00
|
|
|
project(pixelarium VERSION 0.0.12)
|
|
|
|
|
|
|
|
|
|
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
2025-03-12 18:54:23 +01:00
|
|
|
|
|
|
|
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
2025-10-07 17:11:43 +02:00
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED true)
|
2025-03-12 18:54:23 +01:00
|
|
|
|
2025-08-18 22:39:43 +00:00
|
|
|
# setting global module directories
|
|
|
|
|
set(glfw3_module_DIR ${PROJECT_SOURCE_DIR}/modules/glfw)
|
|
|
|
|
set(glfw3_DIR "${glfw3_module_DIR}/CMake")
|
2025-03-12 18:54:23 +01:00
|
|
|
set(imgui_DIR ${PROJECT_SOURCE_DIR}/modules/imgui)
|
|
|
|
|
set(pfd_DIR ${PROJECT_SOURCE_DIR}/modules/portable-file-dialogs)
|
|
|
|
|
set(spdlog_DIR ${PROJECT_SOURCE_DIR}/modules/spdlog)
|
|
|
|
|
|
2025-08-18 22:39:43 +00:00
|
|
|
message(STATUS "GLFW:\t" ${glfw3_module_DIR})
|
2025-03-13 12:00:14 +01:00
|
|
|
message(STATUS "PFD:\t\t" ${pfd_DIR})
|
|
|
|
|
message(STATUS "SPDLOG:\t" ${spdlog_DIR})
|
|
|
|
|
|
2025-09-23 21:57:08 +02:00
|
|
|
#====================
|
|
|
|
|
# Options
|
2025-10-07 17:11:43 +02:00
|
|
|
option(PIXELARIUM_BUILD_UNITTESTS "Generate Unittests" ON)
|
|
|
|
|
option(PIXELARIUM_BUILD_DOCS "Generate Documentation" ON)
|
2026-02-08 12:09:02 +01:00
|
|
|
option(PIXELARIUM_BUILD_DOCS_ONLY "Build only Documentation (no compilation)" OFF)
|
2025-10-11 12:57:41 +02:00
|
|
|
option(PIXELARIUM_BUILD_EXAMPLES "Build example projects" ON)
|
2025-09-23 21:57:08 +02:00
|
|
|
#====================
|
|
|
|
|
|
2025-10-12 21:47:17 +02:00
|
|
|
string(TOUPPER "${CMAKE_PROJECT_NAME}" PIXELARIUM_TITLE)
|
|
|
|
|
|
2025-10-07 17:11:43 +02:00
|
|
|
if(PIXELARIUM_BUILD_DOCS OR PIXELARIUM_BUILD_DOCS_ONLY)
|
2026-02-08 12:09:02 +01:00
|
|
|
find_package(Doxygen REQUIRED)
|
|
|
|
|
include(awesomeDoxygen)
|
|
|
|
|
set(MAINPAGE_FILE "${PROJECT_SOURCE_DIR}/doc/index.md")
|
2025-10-07 17:11:43 +02:00
|
|
|
|
2026-02-08 12:09:02 +01:00
|
|
|
set(DOXYGEN_IN ${PROJECT_SOURCE_DIR}/doc/Doxyfile.in)
|
|
|
|
|
set(DOXYGEN_OUT ${CMAKE_BINARY_DIR}/Doxyfile)
|
2025-10-07 17:11:43 +02:00
|
|
|
|
2026-02-08 12:09:02 +01:00
|
|
|
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
|
|
|
|
|
message(STATUS "Building Docs")
|
2025-10-07 17:11:43 +02:00
|
|
|
|
2026-02-08 12:09:02 +01:00
|
|
|
add_custom_target(doxygen ALL
|
|
|
|
|
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
|
|
|
COMMENT "Generating Docs")
|
2025-10-07 17:11:43 +02:00
|
|
|
|
|
|
|
|
if(PIXELARIUM_BUILD_DOCS_ONLY)
|
|
|
|
|
message(STATUS "Documentation Generated successful")
|
|
|
|
|
list(APPEND CMAKE_MESSAGE_INDENT " ")
|
|
|
|
|
message(STATUS "PIXELARIUM_BUILD_DOCS_ONLY was set to ON. Thus, no compilation will follow.")
|
|
|
|
|
message(STATUS "If compilation shall occur, set '-DPIXELARIUM_BUILD_DOCS_ONLY=OFF'.")
|
|
|
|
|
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
|
|
|
|
|
|
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
|
|
|
|
2025-09-13 14:49:59 +02:00
|
|
|
if(WIN32)
|
|
|
|
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
|
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
2025-10-07 17:11:43 +02:00
|
|
|
set(CMAKE_CXX_FLAGS "/Zi /EHsc")
|
2025-09-13 14:49:59 +02:00
|
|
|
else()
|
2025-10-07 17:11:43 +02:00
|
|
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g")
|
2025-09-13 14:49:59 +02:00
|
|
|
endif()
|
2025-03-12 18:54:23 +01:00
|
|
|
endif()
|
|
|
|
|
if(UNIX)
|
2025-10-07 17:11:43 +02:00
|
|
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g")
|
2025-03-12 18:54:23 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
add_subdirectory(${pfd_DIR})
|
|
|
|
|
add_subdirectory(${spdlog_DIR})
|
2025-08-18 22:39:43 +00:00
|
|
|
add_subdirectory(${glfw3_module_DIR})
|
2025-03-14 19:32:40 +01:00
|
|
|
add_subdirectory(lib)
|
2025-03-12 18:54:23 +01:00
|
|
|
|
2025-03-18 21:22:41 +01:00
|
|
|
#====================
|
2025-08-18 22:39:43 +00:00
|
|
|
# needed for the spdlogger implementation
|
2025-03-18 21:22:41 +01:00
|
|
|
# this is not nice, but it won't work when, e.g. doing it from lower level cmake files
|
|
|
|
|
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
|
|
|
|
|
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
|
|
|
|
|
#====================
|
|
|
|
|
|
2025-10-11 12:57:41 +02:00
|
|
|
if(PIXELARIUM_BUILD_EXAMPLES)
|
|
|
|
|
add_subdirectory(examples)
|
|
|
|
|
endif()
|
2025-06-13 22:23:20 +00:00
|
|
|
|
|
|
|
|
if(PIXELARIUM_BUILD_UNITTESTS)
|
|
|
|
|
include(CTest)
|
|
|
|
|
enable_testing()
|
|
|
|
|
add_subdirectory(tests)
|
|
|
|
|
endif()
|