Итак, я следовал учебнику Введение в Google Test и CMake , который работал нормально. Но когда я перемещаю папку проекта в другой каталог, проект ломается и выдает мне эту ошибку:
FAILED: test/ExampleTests.exe
.
.
.
[build] LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use
/NODEFAULTLIB:library
[build] test\ExampleTests.exe : fatal error LNK1169: one or more multiply defined symbols found
[build] ninja: build stopped: subcommand failed.
[build] Build finished with exit code 1
Это еще не все, но я не хочу бомбардировать вас промежуточным материалом.
Я переместил папку из Desktop\Example
в Desktop\HelloWorld\Example
. Я попытался удалить созданную папку сборки и снова нажать F7, но она продолжала выдавать ошибку.
Структура папки
build\
googletest\
test\
|CMakeLists.txt
| ExampleTests.cpp
CMakeLists.txt
Example.cpp
Example.hpp
CMakeLists.txt :
cmake_minimum_required(VERSION 3.12)
set(This Example)
project(${This} C CXX)
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
enable_testing()
add_subdirectory(googletest)
set(Headers Example.hpp
)
set(Sources Example.cpp
)
add_library(${This} STATIC ${Sources} ${Headers})
add_subdirectory(test)
test \ CMakeLists.txt :
cmake_minimum_required(VERSION 3.12)
set(This ExampleTests)
set(Sources
ExampleTests.cpp
)
add_executable(${This} ${Sources})
target_link_libraries(${This} PUBLIC
gtest_main
Example
)
add_test(
NAME ${This}
COMMAND ${This}
)
ExampleTests. cpp:
#include <gtest/gtest.h>
TEST(ExampleTest, blah)
{
ASSERT_EQ(true, true);
}
Пример. cpp:
#include "Example.hpp"
void Example::test()
{
int x = 5;
}
Example.hpp :
#ifndef EXAMPLE_HPP
#define EXAMPLE_HPP
class Example
{
public:
void test();
};
#endif