CMAKE_MSVC_DEBUG_INFORMATION_FORMAT

在 3.25 版本中新增。

选择针对 MSVC ABI 的 MSVC 调试信息格式。此变量用于初始化所有目标创建时在其上的 MSVC_DEBUG_INFORMATION_FORMAT 属性。它也会通过 try_compile() 命令传播到测试项目中。

允许的值为

Embedded

使用 -Z7 或等效标志进行编译,以生成包含完整符号调试信息的对象文件。

ProgramDatabase

使用 -Zi 或等效标志进行编译,以生成包含所有符号调试信息的程序数据库。

EditAndContinue

使用 -ZI 或等效标志进行编译,以生成支持“编辑并继续”功能的程序数据库。

对于不以 MSVC ABI 为目标编译器的编译器,此值将被忽略,但当使用以 MSVC ABI 为目标编译器的编译器时,不受支持的值将被视为错误。

该值也可以是空字符串(""),在这种情况下,CMake 不会显式添加任何调试信息格式标志。

使用 生成器表达式 来支持按配置指定。例如,以下代码

set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>")

为 `Debug` 和 `RelWithDebInfo` 配置的所有后续目标选择程序数据库调试信息格式。

如果未设置此变量,则 MSVC_DEBUG_INFORMATION_FORMAT 目标属性将不会自动设置。如果该属性未设置,CMake 会使用默认值 $<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>(如果编译器支持),否则使用 $<$<CONFIG:Debug,RelWithDebInfo>:Embedded> 来选择调试信息格式。

注意

此变量仅在策略 CMP0141 在第一个启用使用针对 MSVC ABI 的编译器语言的 project()enable_language() 命令之前设置为 `NEW` 时才有效。