Files
pixelarium/CMakeLists.txt
T

81 lines
2.2 KiB
CMake
Raw Normal View History

2025-03-12 18:54:23 +01:00
cmake_minimum_required(VERSION 3.23)
project(pixelarium VERSION 0.0.0)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CXX_STANDARD 20)
set(CXX_STANDARD_REQUIRED true)
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)
find_package(OpenGL REQUIRED)
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-13 14:49:59 +02:00
if(WIN32)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "/std:c++20 /Zi /EHsc")
else()
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g --std=c++20")
endif()
2025-03-12 18:54:23 +01:00
endif()
if(UNIX)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g --std=c++20")
endif()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin/Debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin/Release)
add_subdirectory(${pfd_DIR})
add_subdirectory(${spdlog_DIR})
2025-08-18 22:39:43 +00:00
add_subdirectory(${glfw3_module_DIR})
2025-03-13 18:58:00 +01:00
add_subdirectory(src)
2025-03-14 19:32:40 +01:00
add_subdirectory(lib)
2025-03-12 18:54:23 +01:00
2025-03-13 12:00:14 +01:00
set(SRC
2025-08-18 22:39:43 +00:00
src/MyApp.cpp
src/main.cpp)
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-03-12 18:54:23 +01:00
add_executable(${PROJECT_NAME} ${SRC})
target_link_libraries(${PROJECT_NAME}
2025-03-14 19:32:40 +01:00
PRIVATE pixelariumimagelib
2025-03-17 18:50:31 +01:00
PRIVATE pixelariumrenderlib
2025-06-13 22:23:20 +00:00
PRIVATE pixelariumutilslib
2025-08-18 22:39:43 +00:00
PRIVATE pixelariumresourcelib
PUBLIC pixelariumapplicationlib)
2025-03-12 18:54:23 +01:00
target_include_directories(${PROJECT_NAME}
2025-03-13 12:00:14 +01:00
PUBLIC ${PROJECT_SOURCE_DIR}/src
2025-03-14 19:32:40 +01:00
PUBLIC ${PROJECT_SOURCE_DIR}/lib
PUBLIC ${PROJECT_SOURCE_DIR}/lib/imaging
2025-08-18 22:39:43 +00:00
PUBLIC ${PROJECT_SOURCE_DIR}/lib/app
2025-03-17 18:50:31 +01:00
PUBLIC ${spdlog_DIR}/include
2025-03-12 18:54:23 +01:00
PUBLIC ${pfd_DIR}
2025-03-13 18:58:00 +01:00
PUBLIC ${LIBCZI_INCLUDE_DIR}
PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
2025-06-13 22:23:20 +00:00
option(PIXELARIUM_BUILD_UNITTESTS "Generate Unittests" ON)
if(PIXELARIUM_BUILD_UNITTESTS)
include(CTest)
enable_testing()
add_subdirectory(tests)
endif()