web-dev-qa-db-ja.com

不明なCMakeコマンド「ExternalProject_Add」

次の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を実行するとエラーが発生します:Unknown CMakeコマンド "ExternalProject_Add"。私のCMakeバージョンはOS Xで3.6.2です

14
user3237732

必要なモジュールはcmakeインストールの一部である必要があります。ただし、次のようにしてプロジェクトに含める必要があります。

_include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
_

externalproject_add(YOUR STUFF HERE)の呼び出し前

説明:

CMAKE_ROOTは、使用中のcmakeインストールを指します。すべてのモジュールはサブフォルダーModules内にあります。

message(STATUS "CMAKE_ROOT=${CMAKE_ROOT}")を使用して現在の値を出力できます。または、そのためにスマートマクロを使用しています。 CMake を参照してください

25
Th. Thielemann

ドキュメントページに直接記述されていませんが、 cmake-modules セクションで説明されているCMake関数には、特定のモジュールを含むが必要です

関数ExternalProject_Addドキュメントページ で説明されている「ExternalProject」というタイトルなので、使用する必要があります

include(ExternalProject)

それを使用する前に。


Find<name>モジュールを除く他のモジュールでも同じ戦略が機能します。これらのモジュールは経由で使用されます

find_package(<name>)
20
Tsyvarev