安装CMake的PDB文件

时间:2013-02-18 22:33:29

标签: c++ windows visual-studio cmake pdb

我正在使用CMake命令安装PDB文件,以便在我的C ++应用程序的开发人员发行版中启用调试。命令如下:

INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/Debug
    DESTINATION bin
    FILES_MATCHING
    PATTERN *.pdb
)

此外,我已设法在同一级别的'src'文件夹中安装用于构建该开发人员发行版的相关源,以便我的顶级分发文件夹看起来像:

include\
src\
lib\
bin\
share\
doc\
3rdparty\
etc\

如何让PDB文件“知道”源位置(我假设这是必需的)?是否有可以实现此目的的CMake命令?什么是一个小例子?

4 个答案:

答案 0 :(得分:8)

我只是answered my own类似的问题, How to get CMake to install PDB files for targets

使用此安装规则将目标的PDB文件(如果存在)复制到目标的安装位置bin目录。

install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)

答案 1 :(得分:4)

PDB文件将绝对路径名存储到源文件中。不使用符号服务器时,确保某种程度的源代码可重定位性的唯一方法是使用subst命令。

我们的想法是使用subst为源树的根创建一个驱动器号的名称(例如N:\)。然后从此驱动器执行构建,以便以N:\开头的绝对路径嵌入到PDB文件中。当您稍后需要在另一台计算机上调试可执行文件时,请在该计算机上使用subst来获取与源相同的绝对路径。这将使PDB文件能够找到源文件。

例如,如果您有文件C:\MySources\main.cpp,请执行以下操作:

subst N: C:\MySources
N:
run your build

稍后,假设您需要在D:\Devel\Other\main.cpp中存储相同文件的计算机上进行调试。只需执行subst N: D:\Devel\Other,然后在N:驱动器中进行操作。


此答案主要基于此question的信息及其中的链接。

答案 2 :(得分:2)

您只需要告知Visual Studio源代码在哪里...它将弹出一个文件浏览器对话框;如果路径与构建时的路径不同,只需指向本地计算机上的源。

答案 3 :(得分:0)

PDB文件存储文件的路径,就像编译程序时一样。没有什么必须让他们知道源 的位置。