首页 > 解决方案 > 用于编译 pdb 文件的 CMake 输出路径

问题描述

我正在尝试在 CMake 中指定静态库的程序数据库(pdb)文件的输出路径。我认为 CMake 称它们为编译 pdb,而不是链接器 pdb。

从 CMake 的文档中我发现我可以通过COMPILE_PDB_OUTPUT_DIRECTORY. 这按预期工作。我也可以指定 pdb 文件的名称COMPILE_PDB_NAME。这也按预期工作。但是,我在目录和名称之间附加了一个无关的配置字符串,这似乎不受前两者的控制。也就是说,最终输出路径的形式为C:\mypdboutputpath\RelWithDebInfo\mypdbname.pdb,其中RelWithDebInfo对应于当前配置。但是,我的输出路径已经包含我自己的配置说明符(我的库输出目录的格式为lib\msvc64-relwithdebinfo)。我一直在尝试设置全局和特定于目标的 pdb 名称和目录,但它们不会影响是否附加了配置字符串。

如何摆脱 pdb 输出路径中附加的配置字符串?

虽然 Visual Studio 是多配置的,但我的方法是像使用单配置一样使用 CMake,即在运行 CMake 时选择配置。

标签: cmakepdb-files

解决方案


帮助我的是设置属性COMPILE_PDB_OUTPUT_DIRECTORY_${CFG}而不是COMPILE_PDB_OUTPUT_DIRECTORY. 对于您的示例,它可能是COMPILE_PDB_OUTPUT_DIRECTORY_RELWITHDEBINFO.

我在 CMake 文档中没有找到任何关于此的内容,但因为同样的事情适用于该LIBRARY_OUTPUT_DIRECTORY属性。CMake 文档特别提到了这个属性的这种行为,所以我认为尝试它也是值得的COMPILE_PDB_OUTPUT_DIRECTORY,它确实有效。希望未来不会发生一些未定义的行为。FWIW 我用 CMake 3.18.1 测试了它

对于OP来说可能为时已晚,但也许它可以帮助像我这样的其他可怜的灵魂。


推荐阅读