diff options
author | Juha Vuolle <juha.vuolle@insta.fi> | 2021-02-07 21:02:49 +0200 |
---|---|---|
committer | Juha Vuolle <juha.vuolle@insta.fi> | 2021-02-08 13:21:05 +0200 |
commit | 4e2636dee3751b764e84b9f328f6dac3c60ce2d8 (patch) | |
tree | 3d55b0122c727585e806309169cec212a0efafea /src | |
parent | 6b910889c1c3f519f649389b4025f3d08d22b28e (diff) |
Add qscxmlc qmake options also for cmake
qmake provides QSCXMLC_NAMESPACE, QSCXMLC_DIR and QSCXMLC_ARGUMENTS
options as documented in
https://doc.qt.io/qt-5/qtscxml-instantiating-state-machines.html
and
https://doc.qt.io/qt-5/qscxmlc.html
Pick-to: 6.1
Task-number: QTBUG-89828
Change-Id: I866807d2b74eec1dcab361e99c3f39ae6fdad25f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/scxml/Qt6ScxmlMacros.cmake | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/scxml/Qt6ScxmlMacros.cmake b/src/scxml/Qt6ScxmlMacros.cmake index 6710f50..4ced82e 100644 --- a/src/scxml/Qt6ScxmlMacros.cmake +++ b/src/scxml/Qt6ScxmlMacros.cmake @@ -38,31 +38,41 @@ function(qt6_add_statecharts target_or_outfiles) set(options) - set(oneValueArgs) - set(multiValueArgs OPTIONS) + set(oneValueArgs OUTPUT_DIR NAMESPACE) + set(multiValueArgs QSCXMLC_ARGUMENTS) cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(scxml_files ${ARGS_UNPARSED_ARGUMENTS}) set(outfiles) + if (ARGS_NAMESPACE) + set(namespace "--namespace" ${ARGS_NAMESPACE}) + endif() + + set(qscxmlcOutputDir ${CMAKE_CURRENT_BINARY_DIR}) + if (ARGS_OUTPUT_DIR) + set(qscxmlcOutputDir ${ARGS_OUTPUT_DIR}) + endif() + foreach(it ${scxml_files}) get_filename_component(outfilename ${it} NAME_WE) get_filename_component(infile ${it} ABSOLUTE) - set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}) - set(outfile_cpp ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}.cpp) - set(outfile_h ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}.h) + set(outfile ${qscxmlcOutputDir}/${outfilename}) + set(outfile_cpp ${qscxmlcOutputDir}/${outfilename}.cpp) + set(outfile_h ${qscxmlcOutputDir}/${outfilename}.h) add_custom_command(OUTPUT ${outfile_cpp} ${outfile_h} ${QT_TOOL_PATH_SETUP_COMMAND} COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qscxmlc - ARGS ${ARGS_OPTIONS} --output ${outfile} ${infile} + ARGS ${namespace} ${ARGS_QSCXMLC_ARGUMENTS} --output ${outfile} ${infile} MAIN_DEPENDENCY ${infile} VERBATIM) list(APPEND outfiles ${outfile_cpp}) endforeach() set_source_files_properties(${outfiles} PROPERTIES SKIP_AUTOMOC TRUE) if (TARGET ${target_or_outfiles}) + target_include_directories(${target_or_outfiles} PRIVATE ${qscxmlcOutputDir}) target_sources(${target_or_outfiles} PRIVATE ${outfiles}) else() set(${target_or_outfiles} ${outfiles} PARENT_SCOPE) |