模块化使用

modularize [<modularize-options>] [<module-map>|<include-files-list>]* [<front-end-options>...]

<modularize-options> 是模块化特定选项的占位符,将在下面的“模块化命令行选项”中进行描述。

<module-map> 指定现有模块映射的文件名的路径。模块映射在语法上必须格式良好。模块化将从映射中提取头文件名称。仅检查普通头文件,假设标记为“private”、“textual”或“exclude”的头文件不会被检查为顶级包含,假设它们要么被检查的其他头文件包含,要么不适合作为模块。

<include-files-list> 指定包含要检查的头文件列表的换行符分隔文件名的路径。以“#”开头的行和空行将被忽略。头文件名后面跟着冒号和其他以空格分隔的文件名将包含这些额外的文件作为依赖项。文件名可以是相对路径或完整路径,但必须在同一行上。例如

header1.h
header2.h
header3.h: header1.h header2.h

请注意,除非指定了 -prefix (header path) 选项,否则头文件列表文件中的非绝对文件路径将相对于头文件列表文件目录。使用 -prefix 指定不同的目录。

<front-end-options> 是常规 Clang 前端参数的占位符,这些参数必须在 <include-files-list> 之后。请注意,默认情况下,模块化假设 .h 文件包含 C++ 源代码,因此如果您使用的是其他语言,您可能需要使用 -x 选项告诉 Clang 头文件包含其他语言,即: -x c

还要注意,因为模块化不使用 clang 驱动程序,您可能需要传递额外的编译器前端参数以匹配驱动程序默认情况下传递的参数。

模块化命令行选项

-prefix=<header-path>

将给定路径追加到头文件列表文件中的非绝对文件路径。默认情况下,假设头文件相对于头文件列表文件目录。使用 -prefix 指定不同的目录。

-module-map-path=<module-map-path>

生成模块映射并将其输出到给定文件。有关描述,请参见模块映射生成

-problem-files-list=<problem-files-list-file-name>

仅供模块映射助手使用。输入与模块存在问题的文件列表。这些文件仍将包含在生成的模块映射中,但将被标记为“排除”头文件。

-root-module=<root-name>

将由 -module-map-path 选项生成的模块放在具有给定名称的封闭模块中。有关描述,请参见模块映射生成

-block-check-header-list-only

将 #include-inside-extern-or-namespace-block 检查限制为仅那些在头文件列表中明确列出的头文件。这是为了避免对那些故意包含在块内的私有包含出现错误消息。

-no-coverage-check

不进行模块映射的覆盖率检查。

-coverage-check-only

仅进行模块映射的覆盖率检查。

-display-file-lists

显示良好文件列表(无编译错误)、问题文件列表和一个组合列表,其中问题文件以“#”开头。这可以用于快速确定哪些文件存在问题。后面的组合列表可能对开始模块化一组头文件很有用。您可以从头文件的完整列表开始,使用 -display-file-lists 选项,然后使用组合列表作为您的中间列表,在修复问题时取消注释头文件。