Как правильно использовать CMake EXTERNALPROJECT_ADD с Git-репозиторием? - PullRequest
6 голосов
/ 16 сентября 2011

Я хотел бы узнать, как загружать и компилировать внешние библиотеки с помощью модуля внешнего проекта 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 Ответ

12 голосов
/ 16 сентября 2011

Возможно, ваши переменные не содержат значений, которые, по вашему мнению, они содержат ... Дважды проверьте значение ваших переменных 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#command:find_package

...