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命令?什么是一个小例子?
我刚刚回答了我自己的类似问题,如何让CMake为目标安装PDB文件.
使用此安装规则将目标的PDB文件(如果存在)复制到目标的安装位置bin目录.
install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)
Run Code Online (Sandbox Code Playgroud)
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:
那里的驱动器上工作。
这个答案很大程度上基于这个问题的信息及其链接。