cmake - 用于编译 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 时选择配置。
解决方案
帮助我的是设置属性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来说可能为时已晚,但也许它可以帮助像我这样的其他可怜的灵魂。
推荐阅读
- javascript - requestAnimationFrame 和 setInterval 以不同的速度制作动画
- r - 如何在 R 中按年份计算唯一值?
- java - 解析来自 Kibana 的 ElasticSearch 响应中的聚合可视化
- php - 上传文件失败 Codeigniter
- google-cloud-platform - 使用 GCP AutoML 进行自定义实体提取的预测是否存在页面限制
- c++ - 有什么方法可以在虚幻引擎中查看 stdout 或 stderr 的输出?
- typescript - 打字稿:在文件级别声明类型,而不是数据结构
- bash - 循环遍历每一行 - 尝试过 PS 和 CMD
- javascript - 如何从 URL 获取元数据
- ios - 无法从“App.js”解析“@react-navigation/drawer”-React Native