2016-05-19 7 views
1

googletestをダウンロードし、buildという名前のサブディレクトリに作成しました。実にシンプルGoogleTest:ASSERT_FALSEをコンパイルするCLANGエラー(偽)

#include <gtest/gtest.h> 
TEST(FOO, BAR) { ASSERT_FALSE(false); } 


その後、私はmain.cppという名前のファイルに次のコードを書きました。
libgtestmain.aライブラリをリンクすると、mainの機能は既にのgoogletestで提供されていることに依存しています。

g++ -L./googletest/build/googlemock/gtest -L./googletest/build/googlemock -I./googletest/googletest/include/ -lgmock -lgtest -lgtest_main -lgmock_main -pthread -std=c++11 main.cpp 

とにかく、打ち鳴らす(v3.6.2)は同じコマンドを使用してコンパイルされません:

clang++ -L./googletest/build/googlemock/gtest -L./googletest/build/googlemock -I./googletest/googletest/include/ -lgmock -lgtest -lgtest_main -lgmock_main -pthread -std=c++11 main.cpp 

誤りがある

GCC(v5.3.1)は、次のコマンドを使用して、それをコンパイル

/tmp/main-4127ae.o: In function 'FOO_BAR_Test::TestBody()':
main.cpp:(.text+0x7b): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

コードには、ほとんど唯一のASSERT_FALSE(false)ステートメントが含まれていますimal、完全な例ですが、まだコンパイルされません)、問題はコードそのものにはないと思います。
同じ問題は、次の文からも発生する:

TEST(FOO, BAR) { ASSERT_TRUE(true); } 

打ち鳴らすまたは何に起因googletest にその問題ですか?
私はそれを理解しようとしていますが、のコードを見ているうちにちょっと困っています。googletest

NOTE

私はオープンでもgoogletestため、閉じた問題でもないを見つけることができていませんでしたので、私はgithubのにもそれのためのチケットを開くことです。
しばらくして、問題のリンクを投稿しています。

+1

gccを使用してgtestをビルドし、clangでコンパイルされたものにリンクしているため、ABIの非互換性かもしれません。 – galsh83

+0

おそらくコンパイルエラーとは関係ありませんが、 'libgtest_main.a'または' libgmock_main.a'のどちらかにリンクしてください。 –

答えて

関連する問題