我正在使用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命令?这是一个小例子?
最佳答案
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及其链接的信息。