Как правильно использовать 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 для получения полной информации о файлах конфигурации проекта: