diff options
Diffstat (limited to 'share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst')
-rw-r--r-- | share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst b/share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst deleted file mode 100644 index 6eda26c..0000000 --- a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst +++ /dev/null @@ -1,107 +0,0 @@ -AUTOMOC_DEPEND_FILTERS ----------------------- - -Filter definitions used by :prop_tgt:`AUTOMOC` to extract file names from a -source file that are registered as additional dependencies for the -``moc`` file of the source file. - -Filters are defined as ``KEYWORD;REGULAR_EXPRESSION`` pairs. First the file -content is searched for ``KEYWORD``. If it is found at least once, then file -names are extracted by successively searching for ``REGULAR_EXPRESSION`` and -taking the first match group. - -The file name found in the first match group is searched for - -- first in the vicinity of the source file -- and afterwards in the target's :prop_tgt:`INCLUDE_DIRECTORIES`. - -If any of the extracted files changes, then the ``moc`` file for the source -file gets rebuilt even when the source file itself doesn't change. - -If any of the extracted files is :prop_sf:`GENERATED` or if it is not in the -target's sources, then it might be necessary to add it to the -``_autogen`` target dependencies. -See :prop_tgt:`AUTOGEN_TARGET_DEPENDS` for reference. - -By default :prop_tgt:`AUTOMOC_DEPEND_FILTERS` is initialized from -:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS`, which is empty by default. - -From Qt 5.15.0 on this variable is ignored as moc is able to output the correct -dependencies. - -See the :manual:`cmake-qt(7)` manual for more information on using CMake -with Qt. - - -Example 1 -^^^^^^^^^ - -A header file ``my_class.hpp`` uses a custom macro ``JSON_FILE_MACRO`` which -is defined in an other header ``macros.hpp``. -We want the ``moc`` file of ``my_class.hpp`` to depend on the file name -argument of ``JSON_FILE_MACRO``:: - - // my_class.hpp - class My_Class : public QObject - { - Q_OBJECT - JSON_FILE_MACRO ( "info.json" ) - ... - }; - -In ``CMakeLists.txt`` we add a filter to -:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS` like this:: - - list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS - "JSON_FILE_MACRO" - "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\"" - ) - -We assume ``info.json`` is a plain (not :prop_sf:`GENERATED`) file that is -listed in the target's source. Therefore we do not need to add it to -:prop_tgt:`AUTOGEN_TARGET_DEPENDS`. - -Example 2 -^^^^^^^^^ - -In the target ``my_target`` a header file ``complex_class.hpp`` uses a -custom macro ``JSON_BASED_CLASS`` which is defined in an other header -``macros.hpp``:: - - // macros.hpp - ... - #define JSON_BASED_CLASS(name, json) \ - class name : public QObject \ - { \ - Q_OBJECT \ - Q_PLUGIN_METADATA(IID "demo" FILE json) \ - name() {} \ - }; - ... - -:: - - // complex_class.hpp - #pragma once - JSON_BASED_CLASS(Complex_Class, "meta.json") - // end of file - -Since ``complex_class.hpp`` doesn't contain a ``Q_OBJECT`` macro it would be -ignored by :prop_tgt:`AUTOMOC`. We change this by adding ``JSON_BASED_CLASS`` -to :variable:`CMAKE_AUTOMOC_MACRO_NAMES`:: - - list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS") - -We want the ``moc`` file of ``complex_class.hpp`` to depend on -``meta.json``. So we add a filter to -:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS`:: - - list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS - "JSON_BASED_CLASS" - "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\"" - ) - -Additionally we assume ``meta.json`` is :prop_sf:`GENERATED` which is -why we have to add it to :prop_tgt:`AUTOGEN_TARGET_DEPENDS`:: - - set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json") |