work in progress
This commit is contained in:
104
designer/CMakeLists.txt
Normal file
104
designer/CMakeLists.txt
Normal file
@@ -0,0 +1,104 @@
|
||||
cmake_minimum_required(VERSION 3.22.1)
|
||||
project(mosis-designer)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# Find Lua before RmlUi so it can be used
|
||||
find_package(Lua REQUIRED)
|
||||
|
||||
# Find other dependencies via vcpkg
|
||||
find_package(glfw3 CONFIG REQUIRED)
|
||||
find_package(freetype CONFIG REQUIRED)
|
||||
find_package(PNG 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
|
||||
)
|
||||
|
||||
# Enable RmlUi Lua bindings before fetching
|
||||
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 the RmlUi source directory for backend sources
|
||||
FetchContent_GetProperties(rmlui)
|
||||
set(RMLUI_SOURCE_DIR ${rmlui_SOURCE_DIR})
|
||||
|
||||
# Shared kernel library sources (platform-agnostic code)
|
||||
set(KERNEL_SOURCES
|
||||
../src/main/kernel/src/platform.cpp
|
||||
../src/main/kernel/src/file_interface.cpp
|
||||
)
|
||||
|
||||
# Desktop platform sources
|
||||
set(DESIGNER_SOURCES
|
||||
src/main.cpp
|
||||
src/desktop_platform.cpp
|
||||
src/hot_reload.cpp
|
||||
src/data_models.cpp
|
||||
src/kernel_impl.cpp
|
||||
src/testing/action_recorder.cpp
|
||||
src/testing/action_player.cpp
|
||||
src/testing/ui_inspector.cpp
|
||||
src/testing/visual_capture.cpp
|
||||
# RmlUi backend sources
|
||||
${RMLUI_SOURCE_DIR}/Backends/RmlUi_Backend_GLFW_GL3.cpp
|
||||
${RMLUI_SOURCE_DIR}/Backends/RmlUi_Platform_GLFW.cpp
|
||||
${RMLUI_SOURCE_DIR}/Backends/RmlUi_Renderer_GL3.cpp
|
||||
)
|
||||
|
||||
# Designer executable
|
||||
add_executable(mosis-designer
|
||||
${KERNEL_SOURCES}
|
||||
${DESIGNER_SOURCES}
|
||||
)
|
||||
|
||||
target_include_directories(mosis-designer PRIVATE
|
||||
src
|
||||
../src/main/kernel/include
|
||||
${RMLUI_SOURCE_DIR}
|
||||
${RMLUI_SOURCE_DIR}/Backends
|
||||
${LUA_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
target_link_libraries(mosis-designer PRIVATE
|
||||
glfw
|
||||
freetype
|
||||
PNG::PNG
|
||||
RmlUi::RmlUi
|
||||
RmlUi::Lua
|
||||
nlohmann_json::nlohmann_json
|
||||
)
|
||||
|
||||
target_compile_definitions(mosis-designer PRIVATE
|
||||
MOSIS_PLATFORM_DESKTOP
|
||||
RMLUI_STATIC_LIB
|
||||
)
|
||||
|
||||
# Platform-specific libraries
|
||||
if(WIN32)
|
||||
target_link_libraries(mosis-designer PRIVATE opengl32)
|
||||
elseif(APPLE)
|
||||
find_library(OPENGL_LIBRARY OpenGL)
|
||||
target_link_libraries(mosis-designer PRIVATE ${OPENGL_LIBRARY})
|
||||
else()
|
||||
find_package(OpenGL REQUIRED)
|
||||
target_link_libraries(mosis-designer PRIVATE OpenGL::GL)
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user