CMAKE_MSVC_DEBUG_INFORMATION_FORMAT¶
在 3.25 版本中新增。
选择面向 MSVC ABI 的 MSVC 调试信息格式。此变量用于在所有目标(Target)创建时初始化其 MSVC_DEBUG_INFORMATION_FORMAT 属性。它还会通过调用 try_compile() 命令传播到测试项目中。
允许的值为
Embedded使用
-Z7或等效标志进行编译,以生成包含完整符号调试信息的对象文件。ProgramDatabase使用
-Zi或等效标志进行编译,以生成包含所有符号调试信息的程序数据库(Program Database)。EditAndContinue使用
-ZI或等效标志进行编译,以生成支持“编辑并继续”(Edit and Continue)功能的程序数据库。
对于不以 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>。
注意
仅当在启用使用 MSVC ABI 编译器的语言的第一个 project() 或 enable_language() 命令之前,将策略 CMP0141 设置为 NEW 时,此变量才有效。