CMake cannot find GoogleTest required library in Ubuntu
类似的问题在这里。
这是我的CMakeLists.txt:
1 2 3 4 5 6 7 8 9 10 11 | 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) |
还有我的foo.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 | #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(); } |
现在,使用g ++编译器时一切正常。 但是,当尝试使用QNX的编译器ntox86-c ++时,我遇到了这个问题:
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR
GTEST_MAIN_LIBRARY)
我在使用ntox86-c ++编译器,googletest和cmake-gui的Ubuntu上。
是什么赋予了?
Google测试可能未正确安装(
1 2 3 4 5 6 7 8 | 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 |
这对我有用。
如@detrick所述,Ubuntu软件包
但是,从Ubuntu 18.04开始,存在比其他答案中的手动命令更简单的构建和安装方式:
1 2 3 4 | sudo apt install libgtest-dev build-essential cmake cd /usr/src/googletest sudo cmake . sudo cmake --build . --target install |
ntox86-c ++看起来像是交叉编译器,
自2014年以来,已编译的库已从
1 2 3 4 5 6 7 | set(GTest_ROOT /usr/src/googletest/googletest) add_subdirectory(${GTest_ROOT} "${CMAKE_CURRENT_BINARY_DIR}/googletest" EXCLUDE_FROM_ALL) add_executable(test test.cpp) target_link_libraries(test gtest_main) # or just gtest if main function is defined |
至少有2种变体如何从git中获取特定版本(除了明显的子模块),而不是对googletest源使用系统软件包。
- https://cmake.org/cmake/help/latest/module/FetchContent.html
- https://github.com/google/googletest/blob/master/googletest/README.md
前一段时间,我创建了一个dockerfile,它可以帮助我保留某种食谱,以便稍后在我的系统上的google test上安装:
1 2 3 4 5 6 7 | apt-get install -y git g++ make cmake git clone https://github.com/google/googletest.git cd googletest mkdir gbuild && cd gbuild && cmake .. && make cp -r googletest/include/gtest /usr/local/include cp gbuild/googlemock/gtest/lib*.a /usr/local/lib cp gbuild/googlemock/lib*.a /usr/local/lib |
希望对您有所帮助:)