我正在尝试为 CMake 中静态库的程序数据库 (pdb) 文件指定输出路径。我认为 CMake 称它们为编译 pdbs,而不是链接器 pdbs。
从 CMake 的文档中我发现我可以通过 COMPILE_PDB_OUTPUT_DIRECTORY
指定 pdb 输出目录。这按预期工作。我还可以通过 COMPILE_PDB_NAME
指定 pdb 文件的名称。这也按预期工作。但是,我在目录和名称之间附加了一个无关的配置字符串,它似乎不受前两者中的任何一个控制。也就是说,最终输出路径的形式为 C:\mypdboutputpath\RelWithDebInfo\mypdbname.pdb
,其中 RelWithDebInfo
对应于当前配置。但是,我的输出路径已经包含我自己的配置说明符(我的库输出目录的格式为 lib\msvc64-relwithdebinfo
)。我一直在尝试设置全局和特定于目标的 pdb 名称和目录,但它们不影响是否附加配置字符串。
如何去掉pdb输出路径中附加的配置字符串?
虽然 Visual Studio 是多配置的,但我的方法是像使用单配置一样使用 CMake,即在运行 CMake 时选择配置。
答案 0 :(得分:1)
帮助我的是设置属性 countifs( A2:A100 , "<>**" , B2:B100 , "<>**")
而不是 COMPILE_PDB_OUTPUT_DIRECTORY_${CFG}
。对于您的示例,它可能是 COMPILE_PDB_OUTPUT_DIRECTORY
。
我在 CMake 文档中没有找到任何关于此的内容,但因为同样的事情适用于 COMPILE_PDB_OUTPUT_DIRECTORY_RELWITHDEBINFO
属性。
CMake docs 特别提到了这个属性的这种行为,所以我认为用 LIBRARY_OUTPUT_DIRECTORY
尝试它也是值得的,它确实有效。希望这不是一些未定义的行为会在未来发生变化。 FWIW 我用 CMake 3.18.1 测试了它
对于 OP 来说可能为时已晚,但也许它可以帮助像我这样的其他可怜人。