我正在使用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命令?什么是一个小例子?
答案 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文件存储文件的路径,就像编译程序时一样。没有什么必须让他们知道源 的位置。