首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用cmake和gcc生成PDB文件?

如何使用cmake和gcc生成PDB文件?
EN

Stack Overflow用户
提问于 2021-10-15 15:15:57
回答 1查看 481关注 0票数 0

我想使用OpenCppCoverage来通过单元测试检查我的源文件的覆盖率。但是,我似乎需要生成.pdb文件才能使OpenCppCoverage工作。

问题是我无法从我的构建中生成这样的文件。这是我的CmakeLists.txt

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.17) # version can be different

project(GUnitTestingVSCode) #name of your project

add_subdirectory(googletest) # add googletest subdirectory

add_compile_definitions(TELEMETRY_DIAGNOSTICS)
add_compile_definitions(GTEST)

set(CMAKE_PDB_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/")

include_directories(googletest/include/) # this is so we can #include <gtest/gtest.h>
include_directories(googletest/googlemock/include/gmock/) # this is so we can #include <gmock/gmock.h>
include_directories("${CMAKE_SOURCE_DIR}/"
    "${CMAKE_SOURCE_DIR}/inc/"
    "${CMAKE_SOURCE_DIR}/mocks/"
    "${CMAKE_SOURCE_DIR}/../submodule/library/inc"
    "${CMAKE_SOURCE_DIR}/../submodule/library/inc/Application"
    "${CMAKE_SOURCE_DIR}/../submodule/library/inc/Datalink/"
    "${CMAKE_SOURCE_DIR}/../submodule/library/inc/Demodulation"
    "${CMAKE_SOURCE_DIR}/../submodule/library/inc/Modulation"
    "${CMAKE_SOURCE_DIR}/../inc/Peripherals/"
    "${CMAKE_SOURCE_DIR}/../inc/Protocol/"
    "${CMAKE_SOURCE_DIR}/../inc/Diagnostics/")

file(GLOB_RECURSE SOURCES RELATIVE 
    ${CMAKE_SOURCE_DIR} "../src/Peripherals/DMA.c" "../src/Diagnostics.c"
    ${CMAKE_SOURCE_DIR} "../src/Protocol/DataLink.c"
    "src/*.cpp" "googletest/*.cpp" "mocks/*.c"
    "../submodule/library/src/*.c")

add_executable(gUnitTest ${SOURCES}) # add this executable
set(CMAKE_BUILD_TYPE RelWithDebInfo)
set_target_properties(gUnitTest PROPERTIES
    COMPILE_PDB_NAME "gUnitTestCompiled"
    COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/"
    PDB_NAME "gUnitTestLinker"
    PDB_OUTPUT_DIRECTORY  "${CMAKE_SOURCE_DIR}/build/")
target_link_libraries(gUnitTest PUBLIC gtest gmock) # link google test to this executable

但是,当我在RelWithDebInfo模式下构建测试文件夹(我也尝试过调试)时,我在构建文件夹中没有获得任何.pdb文件。有人能帮我理解我做错了什么吗?

使用的编译器是GCC 9.2.0 (mingw32)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-17 18:08:42

我自己弄明白了。因此,如果有人与之斗争,下面就是答案: gcc编译器无法生成.pdb文件。可以做的是:

  1. 使用称为cv2pdb的转换器将调试信息从gcc转换为pdb文件
  2. 使用支持生成.pdb的llvm/clange编译器
  3. 使用另一个代码覆盖率工具,例如gcc自己的gcov。

我决定使用选项3,用gcov代替opencppcoverage (实际上我使用的是高眼压)。如上文所述,我必须包括额外的旗帜:

代码语言:javascript
运行
复制
-fprofile-arcs -ftest-coverage -fPIC -O0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69586973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档