CMake
でgtest
の最小限の例を作成しようとしていますが、テストをどのようにリンクする必要があるかわかりません。gtestとCMakeをリンクするには?
私はgtestのREADMEを読んでいます。しかし、CMakeLists.txt.in
を作成する代わりに、を使用するプロジェクトに手動でgtest
を追加する方法を学びたいと思います。私は私のテストはgtest
エラーメッセージ
Scanning dependencies of target tests
[ 25%] Building CXX object CMakeFiles/tests.dir/tests/main_test.cc.o
/Users/kkweon/temp/gtest_tutorial/tests/main_test.cc:5:1: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
::testing::InitGoogleTest(&argc, argv);
^
/Users/kkweon/temp/gtest_tutorial/tests/main_test.cc:5:3: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
::testing::InitGoogleTest(&argc, argv);
^
/Users/kkweon/temp/gtest_tutorial/tests/main_test.cc:6:1: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
return RUN_ALL_TESTS();
^
/Users/kkweon/temp/gtest_tutorial/tests/main_test.cc:6:3: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
return RUN_ALL_TESTS();
^
4 warnings generated.
[ 50%] Building CXX object CMakeFiles/tests.dir/tests/add_test.cc.o
[ 75%] Building CXX object CMakeFiles/tests.dir/src/add.cc.o
[100%] Linking CXX executable tests
Undefined symbols for architecture x86_64:
"testing::InitGoogleTest(int*, char**)", referenced from:
_main in main_test.cc.o
"testing::Test::SetUp()", referenced from:
vtable for AddTest_AddIntegers_Test in add_test.cc.o
"testing::Test::TearDown()", referenced from:
vtable for AddTest_AddIntegers_Test in add_test.cc.o
"testing::Test::Test()", referenced from:
AddTest_AddIntegers_Test::AddTest_AddIntegers_Test() in add_test.cc.o
"testing::Test::~Test()", referenced from:
AddTest_AddIntegers_Test::~AddTest_AddIntegers_Test() in add_test.cc.o
"testing::Message::Message()", referenced from:
AddTest_AddIntegers_Test::TestBody() in add_test.cc.o
"testing::UnitTest::GetInstance()", referenced from:
RUN_ALL_TESTS() in main_test.cc.o
"testing::UnitTest::Run()", referenced from:
RUN_ALL_TESTS() in main_test.cc.o
"testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type, char const*, int, char const*)", referenced from:
AddTest_AddIntegers_Test::TestBody() in add_test.cc.o
"testing::internal::AssertHelper::~AssertHelper()", referenced from:
AddTest_AddIntegers_Test::TestBody() in add_test.cc.o
"testing::internal::GetTestTypeId()", referenced from:
___cxx_global_var_init in add_test.cc.o
"testing::internal::MakeAndRegisterTestInfo(char const*, char const*, char const*, char const*, testing::internal::CodeLocation, void const*, void (*)(), void (*)(), testing::internal::TestFactoryBase*)", referenced from:
___cxx_global_var_init in add_test.cc.o
"testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)", referenced from:
AddTest_AddIntegers_Test::TestBody() in add_test.cc.o
"testing::internal::IsTrue(bool)", referenced from:
testing::internal::scoped_ptr<std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::reset(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in add_test.cc.o
testing::internal::scoped_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::reset(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in add_test.cc.o
"testing::internal::AssertHelper::operator=(testing::Message const&) const", referenced from:
AddTest_AddIntegers_Test::TestBody() in add_test.cc.o
"typeinfo for testing::Test", referenced from:
typeinfo for AddTest_AddIntegers_Test in add_test.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [tests] Error 1
make[2]: *** [CMakeFiles/tests.dir/all] Error 2
make[1]: *** [CMakeFiles/tests.dir/rule] Error 2
make: *** [tests] Error 2
情報
をリンクすることはできませんようだmake tests
問題
-
. ├── CMakeLists.txt ├── src │ ├── add.cc │ ├── add.h │ └── main.cc └── tests ├── add_test.cc └── main_test.cc
とCMakeLists.txtは
cmake_minimum_required(VERSION 3.0) set(EXTRA_BINCFLAGS "-Wall -Wextra") set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${EXTRA_BINCFLAGS}) include_directories(/Users/kkweon/github/googletest/googletest/include) include_directories(src) set(SOURCES src/add.cc) set(TEST_SOURCES tests/main_test.cc tests/add_test.cc) add_executable(main src/main.cc ${SOURCES}) add_executable(tests ${TEST_SOURCES} ${SOURCES})
ファイル:
と
/Users/kkweon/github/googletest/googletest/include/gtest/gtest.h
に位置する "gtest.h"/Users/kkweon/github/googletest
に私のプロジェクト構造がダウンロードされていますソースコード全体:githubありがとうございます!
ありがとうございました! GitHubのリンクは私を助けてくれました。 –