2011-09-16 5 views
6

cmake 외부 프로젝트 모듈을 사용하여 외부 라이브러리를 다운로드하고 컴파일하는 방법을 배우고 싶습니다.Git 저장소가있는 CMake EXTERNALPROJECT_ADD의 올바른 사용법은 무엇입니까?

예를 들어 SFML 라이브러리 https://github.com/LaurentGomila/SFML.git에서 소스를 다운로드하여 컴파일하려고한다고 가정 해 보겠습니다. 나는 다음과 같은 것을 사용하려고 시도했다. 불행히도, 난 ... 더블 당신의 sfml_의 값을 확인 * 소스가 :(

EXTERNALPROJECT_ADD(sfml 
PREFIX ${sfml_PREFIX} 

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

INSTALL_DIR ${sfml_INSTALL_DIR} 
CMAKE_ARGS ${sfml_CMAKE_ARGS}) 

답변

12

를 복제 도착 후는 아마도 당신의 변수는 당신이 여기에 포함 생각하는 값을 포함하지 않는 컴파일되지 않는 이유를 알아낼 수 없습니다 변수 또한 이중 확인 CMake 변수 GIT_EXECUTABLE는 ExternalProject을 포함한 후 기대 값 ...

다음 CMakeLists.txt 파일 CMake 2.8.5를 사용하여 내 Mac에서 나를 위해 작동을 가지고 :.

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} 
) 

그것은 permiss와 함께 나를 위해 설치하는 동안 실패합니다 "make"를 sudo로 실행하지 않았기 때문에 이온이 거부되었고 절대 경로 "/Library/Frameworks/sndfile.framework"에 설치하려고 시도했습니다.

다른 조언도 하나 있습니다. 나는 당신이 "/ Applications/CMake 2.8-5.app/Contents/share/cmake-2.8/Modules/FindSFML.cmake"를 CMake 설치에 직접 설치하고 있음을 확인합니다 ... 그것은 일반적으로 권장하지 않습니다. 사용자가 CMake를 제거하고 다시 설치하면 설치가 사라질 수 있습니다. 또는 단순히 다른 CMake로 업그레이드하십시오. 또는 컴퓨터에 설치된 2 번째 또는 3 번째 CMake를 사용합니다.

대신 자신의 설치에서 프로젝트 설정 파일을 만들어야합니다. CMake는 표준 위치에서 패키지를 찾을 수있는 기본 제공 규칙을 사용하여 찾을 수 있습니다. 프로젝트 설정 파일에 대한 자세한 내용은 CMake find_package 문서를 참조하십시오.

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

관련 문제