2016-10-20 5 views
0

의 일부는 내가 통해 GTest 찾으려 인 GTest을 찾을 수 없습니다 :find_package은 CMake

find_package(GTest REQUIRED) 

을하지만, 찾을 수 없습니다 :

Error:Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

나는이 linkGTest 있음을 분배해야한다 알고 표준 CMake를 통해.

내가 잘못한 것을 말해 줄 수 있습니까?

+0

이 왜 GTest이 CMake의 일부입니다 생각하십니까? 'GTEST_ADD_TESTS'을 보았습니까? 아마도 이것을 사용하고 싶습니까? – usr1234567

+0

[CMake가 포함/라이브러리를 찾을 수 없음] 가능한 복제본 (http://stackoverflow.com/questions/39126648/cmake-does-not-find-includes-libraries) – usr1234567

답변

0

find_package CMake의 설치 디렉토리는 보이지 않습니다. PATHCMAKE_PREFIX_VARIABLES 만 평가합니다. CMake의 GTest에 대한 경로를 후자의 변수에 추가하기 만하면 CMake 캐시를 지우고 CMake를 다시 실행합니다.

+0

감사합니다! 나는 쉐이크에게 새로운데, 너와 함께 나를 도울 수 있니? –

+0

FindGTest.cmake가 에서 발견되었습니다. /Applications/Clion.app/Contents/bin/cmake/share/cmake-3.6/Modules/ –

0

우분투 사용자 인 경우 /usr/share/doc/libgtest-dev/README.Debian을 읽어야합니다. 그것은 말한다 :

The Google C++ Testing Framework uses conditional compilation for some things. Because of the C++ "One Definition Rule", gtest must be compiled with exactly the same flags as your C++ code under test. Because this is hard to manage, upstream no longer recommends using precompiled libraries

그래서 컴파일과 정확히 같은 컴파일러 옵션으로 gtest 라이브러리의 자신의 버전을 설치하고, 그에 따라 GTEST_LIBRARY 또는 GTEST_ROOT 변수를 설정해야합니다. 예를 들어

, 나는 다음 않았다

$ mkdir -p ExternalLibs/gTest 
$ cd ExternalLibs/gTest 
$ cmake /usr/src/gtest 
$ make 

가 그럼 난 내 CMakeLists.txt에 다음 줄을 추가 :

set (GTEST_ROOT ${CMAKE_SOURCE_DIR}/ExternalLibs/gTest) 
find_package(GTest REQUIRED)