Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未知的CMake命令“;外部项目“添加”;_Cmake_External Project - Fatal编程技术网

未知的CMake命令“;外部项目“添加”;

未知的CMake命令“;外部项目“添加”;,cmake,external-project,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/

我有以下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\u add”。我的CMake版本是OS X上的3.6.2

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

include(ExternalProject.cmake)
在调用
externalproject\u添加(您的资料在此)
之前。看

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

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

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

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

尽管v3.14之前的版本没有直接写入文档页面,但第节中描述的CMake函数需要包括特定模块

由于函数
ExternalProject\u Add
在标题为“ExternalProject”的中描述,您需要使用

include(ExternalProject)
在使用它之前


除了
查找
模块外,其他模块都采用相同的策略。这些模块通过以下方式使用:

find_package(<name>)
find_包()

您错过了
包含(外部项目)
?!对于任何困惑的人来说,ExternalProject不是一个变量,比如“my_c_project”。您必须逐字逐句地包含“ExternalProject”,而“它不是直接写在文档页面中”-哦,太好了,我只是越来越喜欢CMake。当开发人员懒得在文档中包含所需的步骤时,这真是太好了…@Tustin2121这些模块与cmake一起交付,但只是普通的cmake文件,并且必须像其他所有外部cmake文件一样包含在CMakeLists.txt中。从v3.14开始,有人扩展了文档。它对我不起作用:
include找不到加载文件:ExternalProject.cmake
。但它与@Tsyvarev的答案中的
include(ExternalProject)
完全一致。