[英]Why does my project break and doesn't compile when moving a unit test project I made with CMake
因此,我遵循了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)
測試\\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;
}
示例.hpp :
#ifndef EXAMPLE_HPP
#define EXAMPLE_HPP
class Example
{
public:
void test();
};
#endif
所以我詢問了我鏈接到的視頻的原始上傳者以尋求解決方案,這解決了我的問題。
將它移動到另一個文件夾通常會破壞事情,除非您清理構建文件夾(只需刪除它或不要將它與其余文件一起移動)。 構建文件夾包含其中包含路徑名的中間構建產品,以及也包含路徑名的 CMake 緩存 (CMakeCache.txt)。
當我移動到另一個目錄時,我只是移動了所有文件,除了他所說的構建文件夾之外,打開了 VS Code 並進行了編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.