Browse Source

Build+TextEditor: Add a compile_json_gui() CMake helper

This makes it easier to include JSON GUI declarations in any app. :^)
Andreas Kling 4 years ago
parent
commit
f67c876df0
2 changed files with 15 additions and 6 deletions
  1. 2 6
      Applications/TextEditor/CMakeLists.txt
  2. 13 0
      CMakeLists.txt

+ 2 - 6
Applications/TextEditor/CMakeLists.txt

@@ -1,14 +1,10 @@
+compile_json_gui(MainWindow.json MainWindowUI.h main_window_ui_json)
+
 set(SOURCES
     main.cpp
     TextEditorWidget.cpp
     MainWindowUI.h
 )
 
-add_custom_command(
-    OUTPUT MainWindowUI.h
-    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/MainWindow.json
-    COMMAND ${write_if_different} MainWindowUI.h ${CMAKE_SOURCE_DIR}/Meta/text-to-cpp-string.sh main_window_ui_json ${CMAKE_CURRENT_SOURCE_DIR}/MainWindow.json
-)
-
 serenity_bin(TextEditor)
 target_link_libraries(TextEditor LibWeb LibMarkdown LibGUI LibDesktop)

+ 13 - 0
CMakeLists.txt

@@ -137,6 +137,19 @@ function(serenity_bin target_name)
     serenity_generated_sources(${target_name})
 endfunction()
 
+function(compile_json_gui source output string_name)
+    set(source ${CMAKE_CURRENT_SOURCE_DIR}/${source})
+    add_custom_command(
+        OUTPUT ${output}
+        COMMAND ${write_if_different} ${output} ${CMAKE_SOURCE_DIR}/Meta/text-to-cpp-string.sh ${string_name} ${source}
+        VERBATIM
+        DEPENDS ${CMAKE_SOURCE_DIR}/Meta/text-to-cpp-string.sh
+        MAIN_DEPENDENCY ${source}
+    )
+    get_filename_component(output_name ${output} NAME)
+    add_custom_target(generate_${output_name} DEPENDS ${output})
+endfunction()
+
 function(compile_ipc source output)
     set(source ${CMAKE_CURRENT_SOURCE_DIR}/${source})
     add_custom_command(