CMake error "include could not find load file: FetchContent"

7.3k views Asked by At

I am getting the following error while executing the cmake command on Ubuntu. CMake version - 3.10.2.

 mapp@ubuntu:~/Desktop/LocatePro$ cmake .
 -- Enable testing: ON
 CMake Error at CMakeLists.txt:40 (include):
  include could not find load file:

   FetchContent


CMake Error at CMakeLists.txt:42 (FetchContent_Declare):
   Unknown CMake command "FetchContent_Declare".

 -- Configuring incomplete, errors occurred!
    See also "/home/mapp/Desktop/LocatePro/CMakeFiles/CMakeOutput.log".
 mapp@ubuntu:~/Desktop/LocatePro$ 

Following is the CMakeLists.txt content from line no. 31:

# we will use the network to fetch Google Test sources
# make it possible to disable unit tests when not on network
option(ENABLE_UNIT_TESTS "Enable unit tests" ON)
message(STATUS "Enable testing: ${ENABLE_UNIT_TESTS}")

if(ENABLE_UNIT_TESTS)
# the following code to fetch googletest
# is inspired by and adapted after:
#   - https://cmake.org/cmake/help/v3.11/module/FetchContent.html
include(FetchContent)

FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG        release-1.8.0
)

FetchContent_GetProperties(googletest)

if(NOT googletest_POPULATED)
    FetchContent_Populate(googletest)

    # Prevent GoogleTest from overriding our compiler/linker options
    # when building with Visual Studio
    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
    # Prevent GoogleTest from using PThreads
    set(gtest_disable_pthreads ON CACHE BOOL "" FORCE)

    # adds the targers: gtest, gtest_main, gmock, gmock_main
    add_subdirectory(
      ${googletest_SOURCE_DIR}
      ${googletest_BINARY_DIR}
      )

    # Silence std::tr1 warning on MSVC
    if(MSVC)
      foreach(_tgt gtest gtest_main gmock gmock_main)
        target_compile_definitions(${_tgt}
          PRIVATE
            "_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
          )
      endforeach()
    endif()
  endif()

 add_executable(LocatPro_Test "")

 target_sources(LocatPro_Test
    PRIVATE
    LocatProTest/LocatProTest.cpp
   )

  target_link_libraries(LocatPro_Test
     PRIVATE
     gtest_main
   )

  enable_testing()

  add_test(
     NAME google_test
     COMMAND $<TARGET_FILE:LocatPro_Test>
     )
endif()

I am new to and today only I started working on CMake. Please let me know if I am doing anything wrong and/or missing anything in CMake.

include(FetchContent) is supporting in CMAke version - 3.10.2 on Ubuntu.

1

There are 1 answers

0
Tsyvarev On BEST ANSWER

Module FetchContent has appeared only in CMake 3.11.

(You may try to select previos CMake versions on the above link and find that the module is absent in that versions).