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)
|
|
|
|
|
|
|
|
|
|
set(imgui_DIR ${PROJECT_SOURCE_DIR}/modules/imgui)
|
|
|
|
|
set(glfw_DIR ${PROJECT_SOURCE_DIR}/modules/glfw)
|
|
|
|
|
set(pfd_DIR ${PROJECT_SOURCE_DIR}/modules/portable-file-dialogs)
|
|
|
|
|
set(spdlog_DIR ${PROJECT_SOURCE_DIR}/modules/spdlog)
|
|
|
|
|
|
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
|
|
|
|
2025-03-13 12:00:14 +01:00
|
|
|
message(STATUS "IMGUI:\t" ${imgui_DIR})
|
|
|
|
|
message(STATUS "GLFW:\t" ${glfw_DIR})
|
|
|
|
|
message(STATUS "PFD:\t\t" ${pfd_DIR})
|
|
|
|
|
message(STATUS "SPDLOG:\t" ${spdlog_DIR})
|
|
|
|
|
|
2025-03-12 18:54:23 +01:00
|
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "/std:c++20 /Zi /EHsc")
|
|
|
|
|
endif()
|
|
|
|
|
if (WIN32 AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g --std=c++20")
|
|
|
|
|
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})
|
|
|
|
|
add_subdirectory(${glfw_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
|
|
|
|
|
src/AppGLFW.cpp
|
|
|
|
|
src/main.cpp
|
|
|
|
|
${imgui_DIR}/imgui.cpp
|
|
|
|
|
${imgui_DIR}/imgui_demo.cpp
|
|
|
|
|
${imgui_DIR}/imgui_draw.cpp
|
|
|
|
|
${imgui_DIR}/imgui_tables.cpp
|
|
|
|
|
${imgui_DIR}/imgui_widgets.cpp
|
|
|
|
|
${imgui_DIR}/backends/imgui_impl_opengl3.cpp
|
|
|
|
|
${imgui_DIR}/backends/imgui_impl_glfw.cpp)
|
2025-03-12 18:54:23 +01:00
|
|
|
|
2025-03-18 21:22:41 +01:00
|
|
|
#====================
|
|
|
|
|
# needed for the spdlogger implemntation
|
|
|
|
|
# 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
|
|
|
|
|
PRIVATE pixelariumresourcelib)
|
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-03-17 18:50:31 +01:00
|
|
|
PUBLIC ${spdlog_DIR}/include
|
2025-03-12 18:54:23 +01:00
|
|
|
PUBLIC ${imgui_DIR}
|
|
|
|
|
PUBLIC ${imgui_DIR}/backends
|
|
|
|
|
PUBLIC ${glfw_INCLUDE_DIR}
|
|
|
|
|
PUBLIC ${pfd_DIR}
|
2025-03-13 18:58:00 +01:00
|
|
|
PUBLIC ${LIBCZI_INCLUDE_DIR}
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
|
|
2025-03-12 18:54:23 +01:00
|
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
|
|
|
PRIVATE opengl32.lib
|
|
|
|
|
PRIVATE glfw
|
2025-03-17 18:50:31 +01:00
|
|
|
PRIVATE OpenGL::GL)
|
2025-03-12 18:54:23 +01:00
|
|
|
endif()
|
|
|
|
|
if(LINUX)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
|
|
|
PRIVATE glfw GL)
|
|
|
|
|
endif()
|
|
|
|
|
if(APPLE)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
|
|
|
PUBLIC glfw
|
|
|
|
|
PUBLIC "-framework OpenGL")
|
|
|
|
|
endif()
|
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()
|