Как правильно использовать CMake EXTERNALPROJECT_ADD с Git-репозиторием?

Я хотел бы узнать, как загружать и компилировать внешние библиотеки с помощью модуля внешнего проекта cmake.

Например, скажем, что я хотел скачать исходный код из библиотеки SFML https://github.com/LaurentGomila/SFML.git и скомпилируйте это. Я пытался использовать что-то вроде следующего. К сожалению, я не могу понять, почему он не компилируется после клонирования источника:(

EXTERNALPROJECT_ADD(sfml
PREFIX ${sfml_PREFIX}

GIT_REPOSITORY https://github.com/LaurentGomila/SFML.git

INSTALL_DIR ${sfml_INSTALL_DIR}
CMAKE_ARGS ${sfml_CMAKE_ARGS})

1 ответ

Решение

Возможно, ваши переменные не содержат значений, которые, по вашему мнению, они содержат... Дважды проверьте значение ваших переменных sfml_*. Также дважды проверьте, что переменная CMake GIT_EXECUTABLE имеет значение, которое вы ожидаете после включения ExternalProject...

Следующий файл CMakeLists.txt работает на моем Mac с использованием CMake 2.8.5:

cmake_minimum_required(VERSION 2.8)
project(SfmlBuilder)
include(ExternalProject)

set(sfml_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/sfml")
set(sfml_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/sfml")
set(sfml_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${sfml_INSTALL_DIR})

message("sfml_PREFIX='${sfml_PREFIX}'")
message("sfml_INSTALL_DIR='${sfml_INSTALL_DIR}'")
message("sfml_CMAKE_ARGS='${sfml_CMAKE_ARGS}'")
message("GIT_EXECUTABLE='${GIT_EXECUTABLE}'")

ExternalProject_Add(sfml
  PREFIX ${sfml_PREFIX}
  GIT_REPOSITORY https://github.com/LaurentGomila/SFML.git
  INSTALL_DIR ${sfml_INSTALL_DIR}
  CMAKE_ARGS ${sfml_CMAKE_ARGS}
)

Он завершается с ошибкой во время установки с отказом в разрешении, потому что я не запустил "make" как sudo, и пытается установить по абсолютному пути "/Library/Frameworks/sndfile.framework"

Еще один совет тоже. Я замечаю, что вы устанавливаете "/Applications/CMake 2.8-5.app/Contents/share/cmake-2.8/Modules/FindSFML.cmake" непосредственно в установку CMake... Как правило, это не рекомендуется, так как это изменение CMake установка может исчезнуть, если пользователь удалит и повторно установит CMake. Или просто обновиться до другого CMake. Или использует второй или третий CMake, который также установлен на компьютере.

Вместо этого вам следует создать файл конфигурации проекта в вашей собственной установке, который CMake сможет найти с помощью встроенных правил поиска пакетов в стандартных местах. Прочитайте мелкий шрифт документации CMake find_package для получения полной информации о файлах конфигурации проекта:

http://cmake.org/cmake/help/cmake-2-8-docs.html

Другие вопросы по тегам