find_package找不到作为CMake一部分的GTest

时间:2016-10-20 07:49:52

标签: c++ cmake googletest

我希望通过以下方式找到GTest

find_package(GTest REQUIRED)

但是找不到:

  

错误:无法找到GTest(缺少:GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

我从link知道GTest应该通过标准CMake分发。

你能告诉我我做错了吗?

3 个答案:

答案 0 :(得分:2)

如果您使用的是Ubuntu,则应阅读/usr/share/doc/libgtest-dev/README.Debian。它说:

  

Google C ++测试框架对某些人使用条件编译   的东西。由于C ++"一个定义规则",gtest必须是   使用与测试中的C ++代码完全相同的标志编译。   由于这很难管理,上游不再推荐使用   预编译库

因此,您应该使用完全相同的编译器选项编译和安装自己版本的gtest库,并相应地设置GTEST_LIBRARYGTEST_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)

答案 1 :(得分:1)

find_package没有查看CMake的安装目录。它仅评估PATHCMAKE_PREFIX_VARIABLES。只需将CMake的GTest路径添加到后一个变量,清除CMake缓存并重新运行CMake。

答案 2 :(得分:1)

如果已安装gtest,则可以执行以下操作:

add_subdirectory("/usr/src/gtest" ${CMAKE_BINARY_DIR}/gtest)
enable_testing()
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(test test.cpp)
target_link_libraries(test gtest gtest_main)
add_test(AllTests test)