这是我的CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
# Locate GTest
find_package(GTest REQUIRED)
include_directories(/usr/include/gtest)
# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests gtest.cpp)
target_link_libraries(runTests /usr/lib/gtest pthread)
运行cmake时出现以下错误:
michael@michaelFriko:~/workspace/gtest/src$ cmake CMakeLists.txt
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY)
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindGTest.cmake:150 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:8 (find_package)
如何解决这个问题?
答案 0 :(得分:14)
你倒退了。 find_package
调用应该为您找到gtest库的位置。您不再需要手动指定包含和库路径:
# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests my_test.cpp)
target_link_libraries(runTests ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
有关详细信息,请查看CMake模块目录中的FindGTest.cmake
。
您收到错误消息的原因是find_package(GTest REQUIRED)
无法在您的系统上找到gtest。使用REQUIRED
参数,如果找不到库,则请求CMake立即失败(这实际上是正确的做法)。
所以你需要做的是为FindGTest
提供找到你的图书馆的方法。遗憾的是,没有标准的方法可以做到这一点,因为查找库所需的信息因库而异。因此,您必须查看查找脚本的来源。
这将告诉您FindGTest
依赖于环境变量GTEST_ROOT
来查找库。将该环境变量设置为gtest安装的路径,重新运行CMake,你应该没问题。
如果您的安装布局与FindGTest
期望的布局不同,您可能需要编写自己的查找脚本。与CMake一起提供的查找脚本通常非常好,但有时它们只是不能在开箱即用的某些平台上运行。如果您可以提供一个补丁来增加对您的平台的支持,那么将它与官方CMake发行版集成通常没有问题。
请注意,如果您打算自己构建gtest(而不是使用操作系统提供的二进制文件),那么首先使用find脚本并不是最好的主意。您应该使用imported target代替。
答案 1 :(得分:0)
您需要安装Google测试框架。
在Debian / Ubuntu上:
sudo aptitude install libgtest-dev
cd /usr/src/gtest/
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib
来源:https://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/