Search code examples
cmakeexternal-project

Unknown CMake command "ExternalProject_Add"


I have following CMakeLists.txt file:

cmake_minimum_required (VERSION 3.2 FATAL_ERROR)

project (utils VERSION 1.0.0 LANGUAGES CXX)

ExternalProject_Add(json-c
    GIT_REPOSITORY "https://github.com/json-c/json-c.git"
    UPDATE_COMMAND git pull "https://github.com/json-c/json-c.git"

    CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/SDL_image/./configure
                      --prefix=${SDL_INSTALL_DIR}

    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/json-c

    INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}
    )

I want to add json-c library to my project, but when I run cmake I'm getting error: Unknown CMake command "ExternalProject_Add". My CMake version is 3.6.2 on OS X


Solution

  • The required module should be part of your cmake installation. But you have to include it into your project with:

    include(ExternalProject)
    

    before the call of externalproject_add(YOUR STUFF HERE). See Modules

    There are two include variants:

    include(<MODULE_NAME_WITHOUT_.cmake>)
    include(<FULL_PATH_TO_MODULE_WITH_.cmake>)
    

    Examples:

    include(gcovr)
    include(${PROJECT_DIR}/cmake/gcovr.cmake)
    

    Modules are plain cmake files and have to be included like your own module files (In case you have them).

    The variable CMAKE_MODULE_PATH is a list of all directories where cmake is loading modules from. You can print out the current value with:

    message(STATUS "CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}") 
    

    Or you are using smart macros for that. See CMake