Can compile with RMLUI.

This commit is contained in:
Yohan Boujon 2025-04-28 15:10:01 +02:00
parent 3bc5e2a0db
commit 26bdf2aba2
6 changed files with 123 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
**/build/**

View file

@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.18)
project(
gui_framework_benchmark
DESCRIPTION "GUI Framework Benchmark"
HOMEPAGE_URL "https://www.etheryo.fr/"
LANGUAGES CXX C
)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Projects
add_subdirectory(rmlui)

50
rmlui/CMakeLists.txt Normal file
View file

@ -0,0 +1,50 @@
# Project
project(
rmlui_test
VERSION 1.0.0
DESCRIPTION "rmlui_test"
LANGUAGES CXX C
)
# Dependencies
set(CMAKE_TLS_VERIFY FALSE) # Custom TLS/Proxy sometimes does not enable download
include(dependencies.cmake)
# Source files
set(TARGET rmlui_test)
set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src")
add_executable(${TARGET}
${SOURCES}/main.cpp
)
# Include folders
target_include_directories(${TARGET} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_include_directories(${TARGET} PRIVATE "${RMLUI_INCLUDE_DIRS}")
# Libraries
target_link_libraries(
${TARGET} PRIVATE
rmlui_debugger
rmlui_core
)
# Compilation depending on the platform
if(MSVC)
# Build the program as a window-only (no cmd)
if(CMAKE_BUILD_TYPE STREQUAL "Release")
target_link_options(${TARGET} PRIVATE "/SUBSYSTEM:WINDOWS")
target_compile_options(${TARGET} PRIVATE /W3 /WX )
else()
target_compile_options(${TARGET} PRIVATE /W3 /WX /DEBUG )
endif()
else()
target_compile_options(${TARGET} PRIVATE -Wall -Wextra -Wpedantic -Werror)
endif()
# Output folder
set_target_properties(${TARGET}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)

View file

@ -0,0 +1,9 @@
<rml>
<head>
<title>Hello world</title>
</head>
<body data-model="animals">
<h1>RmlUi</h1>
<p>Hello world</p>
</body>
</rml>

38
rmlui/dependencies.cmake Normal file
View file

@ -0,0 +1,38 @@
cmake_minimum_required(VERSION 3.11)
# Freetype parameters
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
# Freetype
include(FetchContent)
FetchContent_Declare(
freetype
DOWNLOAD_EXTRACT_TIMESTAMP OFF
GIT_REPOSITORY https://gitlab.freedesktop.org/freetype/freetype.git
GIT_TAG VER-2-13-3
)
FetchContent_GetProperties(freetype)
if (NOT freetype_POPULATED)
set(FETCHCONTENT_QUIET NO)
FetchContent_MakeAvailable(freetype)
endif()
# RML UI parameters
set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
set(Freetype_ROOT ${freetype_SOURCE_DIR} CACHE PATH "Path to freetype root" FORCE)
add_library(Freetype::Freetype ALIAS freetype)
# RML UI
FetchContent_Declare(
rmlui
GIT_REPOSITORY https://github.com/mikke89/RmlUi.git
GIT_TAG 6.1
)
FetchContent_GetProperties(rmlui)
if (NOT rmlui_POPULATED)
set(FETCHCONTENT_QUIET NO)
FetchContent_MakeAvailable(rmlui)
endif()
set(RMLUI_INCLUDE_DIRS
"${RmlUi_SOURCE_DIR}/Include"
"${RmlUi_SOURCE_DIR}/Backends"
"${RmlUi_SOURCE_DIR}/Samples/shell/include"
)

11
rmlui/src/main.cpp Normal file
View file

@ -0,0 +1,11 @@
#include <RmlUi/Core.h>
#include <RmlUi/Debugger.h>
#include <RmlUi_Backend.h>
#include <cstdio>
int main(int argc, char **argv)
{
printf("Using RML Version: %s\n", Rml::GetVersion().c_str());
return 0;
}