重新编译相关编译单元
如果两个编译单元 A 和 B 引用相同的实例化,那么 -qtemplateregistry 编译器选项具有以下效果:
- 如果首先编译 A ,那么 A 的对象文件包含用于实例化的代码。
- 稍后编译 B 时, B 的对象文件不包含用于实例化的代码,因为对象 A 已执行此操作。
- 如果稍后更改 A 以使其不再引用此实例化,那么对象 B 中的引用将产生未解析的符号错误。 当您重新编译 A 时,编译器会检测到此问题并按如下所示进行处理:
- 如果 -qtemplaterecompile 编译器选项生效,那么编译器将使用为 A 指定的相同编译器选项,在链接步骤期间自动重新编译 B。 (但是,请注意,如果您使用单独的编译和链接步骤,那么需要在链接步骤中包含编译选项以确保正确编译 B。)
- 如果 -qnotemplaterecompile 编译器选项生效,那么编译器将发出警告,您必须手动重新编译 B。