gpt4 book ai didi

c++ - .CPP中的类定义时,CMake for Google测试

转载 作者:行者123 更新时间:2023-12-02 10:04:59 26 4
gpt4 key购买 nike

当我的类定义位于.h文件中时,我的make命令未给出任何错误,并且我的测试已成功通过。

但是,一旦我将类定义移动到.cpp文件,我就会得到一个undefined reference to `Class::method(int)'。我应该如何相应地更改CMakeLists.txt?

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)

# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests tests.cpp)
target_link_libraries(runTests ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)

我遵循了本教程:

https://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/

例。导师
#ifndef INSTRUCTOR_H
#define INSTRUCTOR_H

#include <iostream>
#include <vector>
using namespace std;

class Instructor
{
int instrId;
string instrEmail;
string instrPassword;

public:
Instructor();
void showGameStatus();
void setInstrId(int newInstrId);
int getInstrId();

};

#endif

讲师
#include <iostream>
#include "Instructor.h"
using namespace std;

Instructor::Instructor()
{
cout << " Default Instructor Constructor\n";
instrId = 0;
instrEmail = "@jaocbs-university.de";
instrPassword = "123";
}
void Instructor::setInstrId(const int newInstrId)
{
instrId = newInstrId;
}

int Instructor::getInstrId()
{
return instrId;
}

最佳答案

如果要获取这种“ undefined reference ”,请确保链接编译Instructor.cpp的结果,或者Instructor.cpp是测试的依赖项,具体取决于构建的组织方式。

这可能很简单:

add_executable(runTests tests.cpp Instructor.cpp)

虽然这可能需要根据您的路径的具体情况进行调整。

关于c++ - .CPP中的类定义时,CMake for Google测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60645475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com