使用 cmake 时将 vcpkg 库 .pdb 文件复制到构建文件夹的规范方法是什么

问题描述 投票:0回答:1

我正在将一些项目转换为 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 构建发生在同一台机器上,它可能会起作用。大概 需要一些修补才能使其正常工作。

但也许有更好的方法?

cmake pdb vcpkg
1个回答
0
投票

我也有同样的问题。 我的内部和外部依赖项正确地“安装”了本地 vcpkg 文件夹中的 dll 和 pdb

my_project\build\vcpkg_installed\x64-windows\debug\bin
,但随后 dll 被复制到输出目录中。 您对此有任何更新吗?

© www.soinside.com 2019 - 2024. All rights reserved.