# D:\Dev\Mosis\MosisService\designer\CMakeLists.txt cmake_minimum_required(VERSION 3.22.1) project(mosis-designer) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Find dependencies via vcpkg find_package(glfw3 CONFIG REQUIRED) find_package(freetype CONFIG REQUIRED) find_package(PNG REQUIRED) find_package(Lua REQUIRED) find_package(glad CONFIG REQUIRED) find_package(nlohmann_json CONFIG REQUIRED) # Fetch RmlUi include(FetchContent) FetchContent_Declare( rmlui GIT_REPOSITORY https://github.com/mikke89/RmlUi.git GIT_TAG 6.0 ) set(RMLUI_LUA_BINDINGS ON CACHE BOOL "" FORCE) set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) set(RMLUI_SAMPLES OFF CACHE BOOL "" FORCE) set(RMLUI_TESTS OFF CACHE BOOL "" FORCE) set(RMLUI_FONT_ENGINE "freetype" CACHE STRING "" FORCE) FetchContent_MakeAvailable(rmlui) # Get glad include directories explicitly get_target_property(GLAD_INCLUDE_DIRS glad::glad INTERFACE_INCLUDE_DIRECTORIES) # Shared kernel library (platform-agnostic code from MosisService) add_library(mosis-kernel STATIC ../src/main/cpp/RmlUi_Renderer_GL3.cpp ) target_include_directories(mosis-kernel PUBLIC ../src/main/kernel/include ../src/main/cpp ${GLAD_INCLUDE_DIRS} ${LUA_INCLUDE_DIR} ) target_link_libraries(mosis-kernel PUBLIC rmlui rmlui_lua ${LUA_LIBRARIES} glad::glad ) target_include_directories(mosis-kernel PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_compile_definitions(mosis-kernel PUBLIC MOSIS_PLATFORM_DESKTOP # Use our wrapper header that sets up RMLUI_SHADER_HEADER_VERSION before including glad RMLUI_GL3_CUSTOM_LOADER="glad_loader.h" ) # Designer executable add_executable(mosis-designer main.cpp src/desktop_platform.cpp src/desktop_file_interface.cpp src/hot_reload.cpp src/platform_singleton.cpp ) target_include_directories(mosis-designer PRIVATE src ../src/main/kernel/include ../src/main/cpp ) target_link_libraries(mosis-designer PRIVATE mosis-kernel glad::glad glfw freetype PNG::PNG nlohmann_json::nlohmann_json ) # Windows-specific if(WIN32) target_link_libraries(mosis-designer PRIVATE opengl32) endif() # Copy assets for development add_custom_command(TARGET mosis-designer POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../src/main/assets $/assets )