2017-01-12 14 views
7

Mam następujący plik CMakeLists.txt:Nieznane polecenie CUpewnij „ExternalProject_Add”

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

chcę dodać json-C biblioteki do mojego projektu, ale gdy uruchamiam cmake Dostaję błąd: polecenie nieznane CUpewnij "ExternalProject_Add". Moja wersja CMake to 3.6.2 na OS X

+5

Tęskniłeś za 'include (ExternalProject)' ?! – usr1234567

Odpowiedz

10

Wymagany moduł powinien być częścią Twojej instalacji cmake. Ale trzeba dołączyć go do swojego projektu z:

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

przed wywołaniem externalproject_add(YOUR STUFF HERE)

Wyjaśnienie:

CMAKE_ROOT wskazuje instalacji cmake w użyciu. Wszystkie moduły znajdują się w podfolderze Moduły.

Możesz wydrukować bieżącą wartość za pomocą komunikatu (STATUS "CMAKE_ROOT = $ {CMAKE_ROOT}"). Lub używasz do tego inteligentnych makr. Zobacz CMake

10

Chociaż nie jest napisane bezpośrednio na stronach dokumentacji, funkcje CWprowadä opisane w cmake-modules sekcji wymaga tym konkretnym modułem.

Jako funkcja ExternalProject_Add jest opisana w documentation page tytułem jako "ExternalProject", trzeba użyć

include(ExternalProject) 

przed użyciem.


Ta sama strategia działa dla wszystkich innych modułów z wyjątkiem Find<name>. Moduły te są używane przez:

find_package(<name>)