我希望通过以下方式找到GTest
:
find_package(GTest REQUIRED)
但是找不到:
错误:无法找到GTest(缺少:GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
我从link知道GTest
应该通过标准CMake分发。
你能告诉我我做错了吗?
答案 0 :(得分:2)
如果您使用的是Ubuntu,则应阅读/usr/share/doc/libgtest-dev/README.Debian
。它说:
Google C ++测试框架对某些人使用条件编译 的东西。由于C ++"一个定义规则",gtest必须是 使用与测试中的C ++代码完全相同的标志编译。 由于这很难管理,上游不再推荐使用 预编译库
因此,您应该使用完全相同的编译器选项编译和安装自己版本的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)
答案 1 :(得分:1)
find_package
没有查看CMake的安装目录。它仅评估PATH
和CMAKE_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)