@@ -30,6 +30,33 @@ include_directories(external/json)
3030# PROJECT STRUCTURE
3131# =============================================================================
3232
33+ # -----------------------------------------------------------------------------
34+ # Automatic generation of ui_<project_name>.h headers from .tuik files declared by the user
35+ # -----------------------------------------------------------------------------
36+ # Example usage in the project's CMakeLists.txt:
37+ # set(TUIKIT_UI examples/simple_ui.tuik path/to/other_ui.tuik)
38+ if (NOT DEFINED TUIKIT_UI)
39+ set (TUIKIT_UI "${CMAKE_SOURCE_DIR} /examples/example_2.tuik" )
40+ endif ()
41+ set (EMBEDDED_HEADERS "" )
42+ foreach (TUIK_FILE ${TUIKIT_UI} )
43+ get_filename_component (TUIK_NAME ${TUIK_FILE} NAME_WE )
44+ get_filename_component (TUIK_DIR ${TUIK_FILE} DIRECTORY )
45+ set (VAR_NAME "${TUIK_NAME} _tuik" )
46+ set (HEADER_FILE "${TUIK_DIR} /${TUIK_NAME} _tuik.h" )
47+ add_custom_command (
48+ OUTPUT ${HEADER_FILE}
49+ COMMAND ${CMAKE_COMMAND} -E make_directory ${TUIK_DIR}
50+ COMMAND xxd -i -n ${VAR_NAME} ${TUIK_FILE} > ${HEADER_FILE}
51+ DEPENDS ${TUIK_FILE}
52+ COMMENT "Generating ${HEADER_FILE} from ${TUIK_FILE} with variable ${VAR_NAME} "
53+ VERBATIM
54+ )
55+ list (APPEND EMBEDDED_HEADERS ${HEADER_FILE} )
56+ endforeach ()
57+ add_custom_target (generate_embedded_headers ALL DEPENDS ${EMBEDDED_HEADERS} )
58+
59+
3360# Headers
3461set (TUIKIT_HEADERS
3562 include/tuikit.h
@@ -140,7 +167,7 @@ install(DIRECTORY include/tuikit/core/ DESTINATION include/tuikit/core FILES_MAT
140167install (DIRECTORY include/tuikit/layouts/ DESTINATION include/tuikit/layouts FILES_MATCHING PATTERN "*.h" )
141168install (DIRECTORY include/tuikit/widgets/ DESTINATION include/tuikit/widgets FILES_MATCHING PATTERN "*.h" )
142169
143- # Installation de la librairie
170+ # Library installation
144171install (TARGETS tuikit
145172 EXPORT TUIFrameworkTargets
146173 LIBRARY DESTINATION lib
@@ -149,7 +176,7 @@ install(TARGETS tuikit
149176 INCLUDES DESTINATION include
150177)
151178
152- # Configuration pour find_package
179+ # Configuration for find_package
153180install (EXPORT TUIFrameworkTargets
154181 FILE TUIFrameworkTargets.cmake
155182 NAMESPACE TUIFramework::
@@ -229,22 +256,22 @@ include(CPack)
229256# HELPER SCRIPTS
230257# =============================================================================
231258
232- # Script de build rapide
259+ # Quick build script
233260# configure_file(
234261# "${CMAKE_CURRENT_SOURCE_DIR}/scripts/build.sh.in"
235262# "${CMAKE_CURRENT_BINARY_ROOT}/build.sh"
236263# @ONLY
237264# )
238265
239- # Script d'installation
266+ # Installation script
240267# configure_file(
241268# "${CMAKE_CURRENT_SOURCE_DIR}/scripts/install.sh.in"
242269# "${CMAKE_CURRENT_BINARY_ROOT}/install.sh"
243270# @ONLY
244271# )
245272
246273# =============================================================================
247- # INFORMATIONS DE BUILD
274+ # BUILD INFORMATION
248275# =============================================================================
249276
250277message (STATUS "=================================" )
@@ -258,3 +285,4 @@ message(STATUS "Build tests: ${BUILD_TESTS}")
258285message (STATUS "Build docs: ${BUILD_DOCS} " )
259286message (STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX} " )
260287message (STATUS "=================================" )
288+
0 commit comments