安装CMake的PDB文件

squ*_*boo 8 c++ windows cmake visual-studio pdb

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

INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/Debug
    DESTINATION bin
    FILES_MATCHING
    PATTERN *.pdb
)
Run Code Online (Sandbox Code Playgroud)

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

include\
src\
lib\
bin\
share\
doc\
3rdparty\
etc\
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*hil 9

我刚刚回答了我自己的类似问题,如何让CMake为目标安装PDB文件.

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

install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)
Run Code Online (Sandbox Code Playgroud)


Rei*_*ica 5

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

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

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

subst N: C:\MySources
N:
run your build
Run Code Online (Sandbox Code Playgroud)

稍后,假设您需要在存储相同文件的计算机上进行调试D:\Devel\Other\main.cpp。只需这样做subst N: D:\Devel\Other,然后也可以从N:那里的驱动器上工作。


这个答案很大程度上基于这个问题的信息及其链接。