25

我有以下 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

4

2 回答 2

38

虽然它没有直接写在 v3.14 之前版本的文档页面中,但cmake-modules部分中描述的 CMake 函数需要包含特定的模块

由于功能在标题为“ExternalProject”的文档页面ExternalProject_Add中描述,您需要使用

include(ExternalProject)

在使用它之前。


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

find_package(<name>)
于 2017-01-16T07:06:15.683 回答
33

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

include(ExternalProject)

在调用之前externalproject_add(YOUR STUFF HERE)。见模块

模块是普通的 cmake 文件,必须像您自己的模块文件一样包含(如果您有它们)。

变量CMAKE_MODULE_PATH是 cmake 从中加载模块的所有目录的列表。您可以使用以下命令打印出当前值:

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

或者您正在为此使用智能宏。见CMake

于 2017-01-13T07:36:27.593 回答