我正在将一些项目转换为 CMake 和 vcpkg。 但是,当我使用 Debug 或 RelWithDebInfo 构建类型时 构建仅复制 .dll 文件,而不复制 vcpkg 中的 .pdb 文件。
这是一个 CMakeLists.txt 示例:
cmake_minimum_required(VERSION 3.22)
project(PdbTest)
find_package(fmt CONFIG REQUIRED)
add_executable(Test main.cpp)
target_link_libraries(Test PRIVATE fmt::fmt)
运行后:
cmake .. --toolchain C:\Tools\vcpkg\scripts\buildsystems\vcpkg.cmake
cmake --build . --config RelWithDebInfo
Gere是
<build-dir>\RelWithDebInfo
中生成的文件,
fmt.dll
没有对应的fmt.pdb
:
25/07/2022 06:54 am 134,144 fmt.dll
25/07/2022 07:04 am 41,984 Test.exe
25/07/2022 07:04 am 1,028,096 Test.pdb
可能的解决方案:
我搜索了一下,确实找到了一个内部 vcpkg 脚本 从dll中找到pdb的路径并将pdb复制到 vcpkg 构建其库时的 vcpkg 安装目录:
https://github.com/microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_copy_pdbs.cmake
所以我想我可以复制这个脚本并将其用于我自己的 CMake 构建, 如果 vcpkg 构建发生在同一台机器上,它可能会起作用。大概 需要一些修补才能使其正常工作。
但也许有更好的方法?
我也有同样的问题。 我的内部和外部依赖项正确地“安装”了本地 vcpkg 文件夹中的 dll 和 pdb
my_project\build\vcpkg_installed\x64-windows\debug\bin
,但随后 dll 被复制到输出目录中。
您对此有任何更新吗?