102 lines
2.7 KiB
CMake
102 lines
2.7 KiB
CMake
# 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
|
|
src/testing/action_recorder.cpp
|
|
src/testing/action_player.cpp
|
|
src/testing/ui_inspector.cpp
|
|
src/testing/visual_capture.cpp
|
|
# Local backend with input recording hooks
|
|
src/backend/RmlUi_Backend_GLFW_GL3.cpp
|
|
src/backend/RmlUi_Platform_GLFW.cpp
|
|
)
|
|
|
|
target_include_directories(mosis-designer PRIVATE
|
|
src
|
|
src/testing
|
|
src/backend
|
|
../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
|
|
$<TARGET_FILE_DIR:mosis-designer>/assets
|
|
)
|