web-dev-qa-db-fra.com

Commande CMake inconnue "ExternalProject_Add"

J'ai le fichier CMakeLists.txt suivant:

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}
    )

Je veux ajouter la bibliothèque json-c à mon projet, mais lorsque j'exécute cmake, j'obtiens une erreur: commande CMake inconnue "ExternalProject_Add". Ma version de CMake est 3.6.2 sur OS X

14
user3237732

Le module requis doit faire partie de votre installation cmake. Mais vous devez l'inclure dans votre projet avec:

include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)

avant l'appel de externalproject_add(YOUR STUFF HERE)

Explication:

CMAKE_ROOT pointe vers l'installation de cmake en cours d'utilisation. Tous les modules sont dans le sous-dossier Modules .

Vous pouvez imprimer la valeur actuelle avec message(STATUS "CMAKE_ROOT=${CMAKE_ROOT}"). Ou vous utilisez des macros intelligentes pour cela. Voir CMake

25
Th. Thielemann

Bien qu'elle ne soit pas directement écrite dans les pages de documentation, les fonctions CMake décrites dans la section cmake-modules nécessitent y compris un module spécifique .

Comme fonction ExternalProject_Add est décrit dans la page de documentation intitulée "ExternalProject", vous devez utiliser

include(ExternalProject)

avant de l'utiliser.


La même stratégie fonctionne pour tous les autres modules sauf Find<name> ceux. Ces modules sont utilisés via

find_package(<name>)
20
Tsyvarev