MSVC_DEBUG_INFORMATION_FORMAT

添加于 3.25 版。

在针对 MSVC ABI 时选择调试信息格式。

有效的值有

Embedded

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

ProgramDatabase

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

EditAndContinue

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

当编译器不针对 MSVC ABI 时,此值会被忽略,但是,当使用针对 MSVC ABI 的编译器时,不被支持的值会被否决为一个错误。

对于空字符串 (""),此值也可能是如此,在这种情况下,将不会由 CMake 显式添加任何调试信息格式标志。

使用 generator expressions,以支持按配置进行规范。例如,代码

add_executable(foo foo.c)
set_property(TARGET foo PROPERTY
  MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>")

为目标 foo 选择 Debug 配置的程序数据库调试信息格式。

如果已经设置该属性,则该属性会从 CMAKE_MSVC_DEBUG_INFORMATION_FORMAT 变量的值进行初始化。如果尚未设置此属性,如果编译器支持,CMake 将使用默认值 $<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>,并且除此之外如果支持 $<$<CONFIG:Debug,RelWithDebInfo>:Embedded> 来选择一种调试信息格式。

注意

该属性仅在策略 CMP0141 在第一个 project() 或者 enable_language() 命令启用使用针对 MSVC ABI 的编译器的语言前被设置为 NEW 时才生效。