| ================ |
| Modularize Usage |
| ================ |
| |
| ``modularize [<modularize-options>] [<module-map>|<include-files-list>]* |
| [<front-end-options>...]`` |
| |
| ``<modularize-options>`` is a place-holder for options |
| specific to modularize, which are described below in |
| `Modularize Command Line Options`. |
| |
| ``<module-map>`` specifies the path of a file name for an |
| existing module map. The module map must be well-formed in |
| terms of syntax. Modularize will extract the header file names |
| from the map. Only normal headers are checked, assuming headers |
| marked "private", "textual", or "exclude" are not to be checked |
| as a top-level include, assuming they either are included by |
| other headers which are checked, or they are not suitable for |
| modules. |
| |
| ``<include-files-list>`` specifies the path of a file name for a |
| file containing the newline-separated list of headers to check |
| with respect to each other. Lines beginning with '#' and empty |
| lines are ignored. Header file names followed by a colon and |
| other space-separated file names will include those extra files |
| as dependencies. The file names can be relative or full paths, |
| but must be on the same line. For example:: |
| |
| header1.h |
| header2.h |
| header3.h: header1.h header2.h |
| |
| Note that unless a ``-prefix (header path)`` option is specified, |
| non-absolute file paths in the header list file will be relative |
| to the header list file directory. Use -prefix to specify a different |
| directory. |
| |
| ``<front-end-options>`` is a place-holder for regular Clang |
| front-end arguments, which must follow the <include-files-list>. |
| Note that by default, modularize assumes .h files |
| contain C++ source, so if you are using a different language, |
| you might need to use a ``-x`` option to tell Clang that the |
| header contains another language, i.e.: ``-x c`` |
| |
| Note also that because modularize does not use the clang driver, |
| you will likely need to pass in additional compiler front-end |
| arguments to match those passed in by default by the driver. |
| |
| Modularize Command Line Options |
| =============================== |
| |
| .. option:: -prefix=<header-path> |
| |
| Prepend the given path to non-absolute file paths in the header list file. |
| By default, headers are assumed to be relative to the header list file |
| directory. Use ``-prefix`` to specify a different directory. |
| |
| .. option:: -module-map-path=<module-map-path> |
| |
| Generate a module map and output it to the given file. See the description |
| in :ref:`module-map-generation`. |
| |
| .. option:: -problem-files-list=<problem-files-list-file-name> |
| |
| For use only with module map assistant. Input list of files that |
| have problems with respect to modules. These will still be |
| included in the generated module map, but will be marked as |
| "excluded" headers. |
| |
| .. option:: -root-module=<root-name> |
| |
| Put modules generated by the -module-map-path option in an enclosing |
| module with the given name. See the description in :ref:`module-map-generation`. |
| |
| .. option:: -block-check-header-list-only |
| |
| Limit the #include-inside-extern-or-namespace-block |
| check to only those headers explicitly listed in the header list. |
| This is a work-around for avoiding error messages for private includes that |
| purposefully get included inside blocks. |
| |
| .. option:: -no-coverage-check |
| |
| Don't do the coverage check for a module map. |
| |
| .. option:: -coverage-check-only |
| |
| Only do the coverage check for a module map. |
| |
| .. option:: -display-file-lists |
| |
| Display lists of good files (no compile errors), problem files, |
| and a combined list with problem files preceded by a '#'. |
| This can be used to quickly determine which files have problems. |
| The latter combined list might be useful in starting to modularize |
| a set of headers. You can start with a full list of headers, |
| use -display-file-lists option, and then use the combined list as |
| your intermediate list, uncommenting-out headers as you fix them. |