CMake在Ubuntu中找不到GoogleTest所需的库

Eri*_*ich 15 c++ ubuntu cmake qnx googletest

类似的问题在这里.

这是我的CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)

# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

# Add test cpp file
add_executable(foo foo.cpp)

# Link test executable against gtest & gtest_main
target_link_libraries(foo ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
Run Code Online (Sandbox Code Playgroud)

而我的foo.cpp:

#include <gtest/gtest.h>

TEST(sample_test_case, sample_test)
{
    EXPECT_EQ(1, 1);
}

int main(int argc, char **argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

现在,使用g ++编译器时一切正常.但是,当尝试使用QNX的编译器ntox86-c ++时,我遇到了这个问题:

/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97中的CMake错误(消息):找不到GTest(缺少:GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

我在Ubuntu上使用ntox86-c ++编译器,googletest和cmake-gui.

是什么赋予了?

小智 24

Google测试可能未正确安装(libgtest-dev可能只安装需要编译的源文件).我遇到了同样的问题,我按照http://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/的说明进行操作.

sudo apt-get install libgtest-dev
sudo apt-get install cmake # install cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make

#copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder
sudo cp *.a /usr/lib
Run Code Online (Sandbox Code Playgroud)

这对我有用.

  • 您不应该将库复制到/ usr/lib中.而是通过CMake右侧标志像GTEST_ROOT或将您的GTest目录添加到CMake的搜索路径. (7认同)
  • 请注意,您不应手动复制生成的文件。相反,使用“sudo make install” (4认同)
  • 在运行`sudo cmake CMakeLists.txt`编译`libgtest-dev`之前,@ detrick忘了添加`cd/usr/src/gtest` (2认同)

mrt*_*rts 6

如@detrick所述,Ubuntu软件包libgtest-dev仅安装源代码,因此您需要自己构建和安装库。

但是,从Ubuntu 18.04开始,存在比其他答案中的手动命令更简单的构建和安装方式:

sudo apt install libgtest-dev build-essential cmake
cd /usr/src/googletest
sudo cmake .
sudo cmake --build . --target install
Run Code Online (Sandbox Code Playgroud)