/GL
(全程序优化)
启用全程序优化。
语法
/GL
[-
]
备注
全程序优化允许编译器利用程序所有模块的信息执行优化。 无全程序优化的情况下,则对每个模块(编译单位)执行优化。
默认情况下,全程序优化处于禁用状态,必须显式启用。 但是,也可以使用 /GL-
显式禁用它。
利用所有模块的信息,编译器可以:
优化寄存器跨函数边界的使用。
更好地跟踪对全局数据的修改,从而减少负载量和存储量。
跟踪指针取消引用修改的可能项集,减少所需的负载量和存储量。
即使在某个模块中定义了函数,也可以在另一个模块中内联该函数。
EDITBIN
和 DUMPBIN
等链接器实用工具无法使用通过 /GL
生成的 .obj
文件。
如果使用 /GL
和 /c
编译程序,则应使用 /LTCG 链接器选项创建输出文件。
/ZI
无法与 /GL
结合使用
更高版本的 Visual Studio 和 MSVC 工具集通常无法读取当前版本中使用 /GL
生成的文件的格式。 除非要为你希望用户现在和将来使用的所有 Visual Studio 版本提供 .lib
文件副本,否则请勿提供一个由 /GL
生成的 .obj
文件组成的 .lib
文件。 有关详细信息,请参阅二进制兼容性限制。
.obj
/GL
除非文件链接到生成.obj
/GL
该文件的同一.lib
台计算机上,否则不应使用预编译头文件生成文件.lib
。 链接时需要 .obj
文件预编译标头文件中的信息。
有关全程序优化的可用优化和限制的详细信息,请参阅 /LTCG
。 /GL
还能实现按配置优化。 编译按配置优化时,如果要从按配置优化进行函数排序,则必须使用 /Gy
或表示 /Gy 的编译器选项进行编译。
在 Visual Studio 开发环境中设置此链接器选项
有关如何在开发环境中指定 /GL
的详细信息,请参阅 /LTCG
(链接时代码生成)。