使用静态库时无法调试GoogleTest

时间:2018-01-06 07:49:10

标签: c++ googletest

我将gtest src放入我的项目文件夹中,如下所示,并希望在VS中调试测试用例。

│  CMakeLists.txt
│  
├─google test source code
│              
├─src
│  │  CMakeLists.txt
│  └─ CObject.h
│          
└─UnitTest
        TCObject.cpp

一切都很好,我使用Cmake生成VS项目文件并在Visual Studio 2015中打开它.CmakeLists.txt如下所示

PROJECT (BVH)
cmake_minimum_required(VERSION 3.00)

SET(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR})
INSTALL(DIRECTORY src/shaders DESTINATION build/bin)
INSTALL(DIRECTORY scene DESTINATION build/bin)
ADD_SUBDIRECTORY(src bin)

################################
# GTest
################################
ADD_SUBDIRECTORY (googletest)
ENABLE_TESTING()
INCLUDE_DIRECTORIES(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})

################################
# Unit Tests
################################
# Add test cpp file
INCLUDE_DIRECTORIES($ENV{GLM})
ADD_EXECUTABLE( runUnitTests UnitTest/TCObject.cpp )
# Link test executable against gtest & gtest_main
TARGET_LINK_LIBRARIES(runUnitTests gtest gtest_main )
ADD_TEST( runUnitTests runUnitTests )

这是我的测试用例

#include<gtest/gtest.h>
#include"../src/CObject.h"
#include<glm/glm.hpp>

TEST(TestCObject,TestInitial){
    CCube *cube=new CCube(glm::vec3(1,2,3),2);
    EXPECT_EQ(2,cube->bounds.pMax[0]);
}

问题1:如果我将gtest和gtest_main的运行时库设置为MDd而不是它自己的MTd,我只能运行我的测试用例},我不知道将来是否有任何问题

问题2:如果我选择设置断点并对其进行调试,则窗口只是闪烁并消失。仅当我更改BUILD_SHARED_LIBRARIES的cmake选项gtest并复制{ {1}}文件到我的可执行测试文件所在的位置,然后我可以调试我的测试用例

但问题是我必须每次都复制dll文件。所以我想知道是否有在静态库中调试的方法(问题1)或者我可以设置gtest的目标空间以到达我的testfile找到的位置(问题) 2)

0 个答案:

没有答案