如何让CMake为目标安装PDB文件

时间:2016-11-29 07:51:53

标签: c++ visual-studio cmake

如何让CMake安装调试Visual Studio生成的DLL文件和EXE文件所需的配套PDB文件?

2 个答案:

答案 0 :(得分:19)

我一直在努力寻找这个问题的好答案。我现在认为我找到了一个:使用带有$<TARGET_PDB_FILE:tgt>生成器表达式的安装文件命令(在CMake 3.1.3和更新版本中可用)。具体来说,下面的安装命令似乎工作。该命令会将目标$ {PROJECT_NAME} pdb文件复制到目标的安装bin目录。

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

该命令将为每个生成pdb文件的配置安装pdb文件。通过使用OPTIONAL,如果源pdb文件不存在,install命令将不会生成错误。此命令用于使用add_library(${PROJECT_NAME} ...)add_executable(${PROJECT_NAME} ...)命令创建的目标。

这是我找到的最佳答案。如果有更好的,请告诉我。我发现了一些难以理解的文档TARGET_PDB_FILE生成器在&#34;信息表达式&#34; cmake-generator-expressions文档的一部分。

答案 1 :(得分:2)

此外,如果不需要单独的PDB文件,则可以使用Generate Debug Information optimized for sharing and publishing (/DEBUG:FULL)进行调试。为此,您需要为目标import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df1 = pd.DataFrame({'A':np.random.randint(0, 100, 1000)}) f, ax = plt.subplots(figsize=(8, 8)) ax = sns.kdeplot(df1['A'], cumulative=True) plt.show() 设置LINK_FLAGS

${PROJECT_NAME}

或者,如果由于某些原因您无法编辑set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "-DEBUG:FULL" ) ,则可以设置CMakeLists.txt选项: