未知的CMake命令“ExternalProject_Add”

时间:2017-01-12 16:40:32

标签: cmake external-project

我有以下CMakeLists.txt文件:

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

我想将json-c库添加到我的项目中,但是当我运行cmake时,我收到错误:未知的CMake命令“ExternalProject_Add”。我的CMake版本在OS X上是3.6.2

2 个答案:

答案 0 :(得分:21)

所需模块应该是cmake安装的一部分。但是你必须将它包含在你的项目中:

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

致电externalproject_add(YOUR STUFF HERE)

之前

说明:

CMAKE_ROOT 指向正在使用的cmake安装。所有模块都在子文件夹模块中。

您可以使用message(STATUS "CMAKE_ROOT=${CMAKE_ROOT}")打印出当前值。或者你正在使用智能宏。见CMake

答案 1 :(得分:16)

虽然它没有直接写在文档页面中,但cmake-modules部分中描述的CMake功能需要包括特定模块

由于功能ExternalProject_Add在标题为"外部项目"的documentation page中有所描述,您需要使用

include(ExternalProject)

使用前。

相同的策略适用于除Find<name>之外的任何其他模块。这些模块通过

使用
find_package(<name>)