未知的CMake命令“;外部项目“添加”;
我有以下CMakeLists.txt文件:未知的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/
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)
完全一致。