diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 0878237..c23437e 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,51 +1,47 @@ # generate PHP definitions macro(generate_php_syntax_definition targetFile srcFile) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${targetFile} COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generators/generate-php.pl < ${CMAKE_CURRENT_SOURCE_DIR}/syntax/${srcFile} > ${CMAKE_CURRENT_BINARY_DIR}/${targetFile} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generators/generate-php.pl ${CMAKE_CURRENT_SOURCE_DIR}/syntax/${srcFile} ) endmacro() generate_php_syntax_definition(javascript-php.xml javascript.xml) generate_php_syntax_definition(css-php.xml css.xml) generate_php_syntax_definition(html-php.xml html.xml) # find all definitions file(GLOB src_defs "${CMAKE_CURRENT_SOURCE_DIR}/syntax/*.xml") set(defs ${src_defs} ${CMAKE_CURRENT_BINARY_DIR}/html-php.xml ${CMAKE_CURRENT_BINARY_DIR}/css-php.xml ${CMAKE_CURRENT_BINARY_DIR}/javascript-php.xml ) # generate the resource file set(qrc_file ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc) -file(REMOVE ${qrc_file}) -file(APPEND ${qrc_file} "\n") -file(APPEND ${qrc_file} "\n") -file(APPEND ${qrc_file} "\n") +set(qrc_body "") foreach(def ${defs}) get_filename_component(def_name ${def} NAME) - file(APPEND ${qrc_file} "${def}\n") + string(APPEND qrc_body "${def}\n") endforeach() -file(APPEND ${qrc_file} "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax\n") -file(APPEND ${qrc_file} "\n") -file(APPEND ${qrc_file} "\n") +set(SYNTAX_DATA_QRC_FILES_STRING ${qrc_body}) +configure_file(syntax-data.qrc.in ${qrc_file} @ONLY) # generate the index file add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" COMMAND katehighlightingindexer "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" "${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc" DEPENDS ${defs} ${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc ) # generate the qrc file manually, to make dependencies on generated files work... add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" COMMAND ${Qt5Core_RCC_EXECUTABLE} --name syntax_data -o "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc" DEPENDS ${defs} ${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax ) # dummy static lib to make cross-folder dependencies work add_library(SyntaxHighlightingData STATIC ${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp) target_link_libraries(SyntaxHighlightingData LINK_PRIVATE Qt5::Core) diff --git a/data/syntax-data.qrc.in b/data/syntax-data.qrc.in new file mode 100644 index 0000000..352d3f0 --- /dev/null +++ b/data/syntax-data.qrc.in @@ -0,0 +1,7 @@ + + + +@CMAKE_CURRENT_BINARY_DIR@/index.katesyntax +@SYNTAX_DATA_QRC_FILES_STRING@ + +