및 conan을 종속성으로 Google Test를 설치 :는 gtest 코난 설치 : 테스트 '에 대한 정의되지 않은 참조 : 내부 : GetBoolAssertionFailureMessage`
conanfile.txt
[requires]
gtest/[email protected]/stable
[generators]
cmake
[imports]
bin, *.dll -> ./build/bin
lib, *.dylib* -> ./build/bin
CMakeLists.txt
PROJECT(MyTestingExample)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
INCLUDE(conanbuildinfo.cmake)
CONAN_BASIC_SETUP()
ADD_EXECUTABLE(my_test test/my_test.cpp)
TARGET_LINK_LIBRARIES(my_test ${CONAN_LIBS})
테스트/my_test.cpp
#include <gtest/gtest.h>
#include <string>
TEST(MyTest, foobar) {
std::string foo("foobar");
std::string bar("foobar");
ASSERT_STREQ(foo.c_str(), bar.c_str()); // working
EXPECT_FALSE(false); // error
}
빌드
$ conan install --build=missing
$ mkdir build && cd build
$ cmake .. && cmake --build .
내가 ASSERT_STREQ
을 사용할 수 있습니다,하지만 난 EXPECT_FALSE
를 사용하는 경우 내가 예기치 않은 오류 얻을 :
my_test.cpp:(.text+0x1e1): undefined reference to `testing::internal::GetBoolAssertionFailureMessage[abi:cxx11](testing::AssertionResult const&, char const*, char const*, char const*)'
collect2: error: ld returned 1 exit status
무슨 잘못을 내 구성? ,
$ conan install --build=missing
# equivalent to
$ conan install -s build_type=Release ... --build=missing
기본 설정
이그런 다음 conan.conf
파일에서 볼 수있다 :
하는 OS와에서 컴파일러 (버전 포함)를 실행하고 있습니까? ''conaninfo.txt''와''CONAN_LIBS''의 내용도 유용 할 것입니다. – drodri
"libcxx"불일치 일 수 있습니다. 오류 출력에서''libcxx = libstdC++ 11''을 사용해야합니다. 리눅스에서 (일반적으로 다중 설정 환경이 아닌) conan install이 기본 설정''-s build_type = Release''을 사용했다고 가정하면''cmake .. -DCMAKE_BUILD_TYPE = Release'를 사용해야합니다. – drodri
고맙습니다. '-DCMAKE_BUILD_TYPE = Release'이이 문제를 해결합니다. – maiermic