Ошибка связи при попытке протестировать функцию cpp11

Итак, у меня есть очень простой класс, который содержит две функции и члена, это из заголовочного файла:

public:
    void addMethod(std::string methodName);
    std::vector<std::string> getResponse();
    std::vector<std::string> methodList;

и это определения из исходного файла:

std::vector<std::string> MethodsList::getResponse() {
    return methodList;
}

void MethodsList::addMethod(std::string methodName)
{
    methodList.push_back(methodName);
}

И у меня есть очень простой тестовый файл, чтобы проверить это:

TEST (MyTestSuit, addMethod) {
    MethodsList ListOfMethods;
    std::string methodName = "GetMethods";
    ListOfMethods.addMethod(methodName);
    ASSERT_EQ(rpcMethods.getResponse()[0], methodName);
}

Но когда я пытаюсь скомпилировать это, я получаю ошибку ссылки как:

methods_test.cpp:(.text+0x86): undefined reference to
`MethodsList::addMethod(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >)'
collect2: error: ld returned 1 exit status

Так что на первый взгляд кажется, что библиотека, которую я использую (googletest), не скомпилирована с поддержкой C++11, но на самом деле я не использую предварительно скомпилированную библиотеку, поэтому я не думаю, что это проблема.

Здесь вы можете проверить некоторую часть моего CMakeList:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)

include_directories(src include)
file(GLOB SOURCE_FILES      "src/*.cpp" "src/*.h")
file(GLOB PUBLIC_HEADERS    "include/*.h")

add_library(${TARGET} SHARED ${SOURCE_FILES} ${PUBLIC_HEADERS})
set(TEST_FILES "${SOURCE_FILES}" "${PUBLIC_HEADERS}")
include(AddGMock)
include(AddGTestTest)
add_gmock()
add_gtest_test(API_tests ${TEST_FILES} ${TARGET})

configure_file(template-library.pc.in template-library.pc @ONLY)
...some install commands...

Так как я могу решить эту ошибку? Любая идея?

0 ответов

Другие вопросы по тегам