CMake ExternalProject 시작하기
5767 단어 CMake
ExternalProject 란 무엇입니까?
소스 트리 외부에서 다른 프로젝트를 가져와 빌드, 설치까지 해 버리는 기능입니다.
언제 편리합니까?
*unix계 OS라면 대부분의 라이브러리는
apt
이나 yum
, pacman
ExternalProject
가 제공하는 ExternalProject_Add
를 사용하여 외부 종속 라이브러리 설정을 자동화 할 수 있습니다.샘플
OpenGL 계열의 라이브러리
glfw
에 의존하는 프로그램을 예로 합니다. 먼저 CMakeLists.txt
몇 가지 포인트를 열거해 갑니다.cmake_minimum_required(VERSION 3.0)
project(Test)
### Configure Dependency install path, include path and library path
set(DEPEND_LIB_ROOT ${PROJECT_BINARY_DIR}/Depends)
set(CMAKE_PREFIX_PATH ${DEPEND_LIB_ROOT})
include_directories(${DEPEND_LIB_ROOT}/include)
link_directories(${DEPEND_LIB_ROOT}/lib)
### Create Target "Test"
add_executable(Test main.cpp)
target_link_libraries(Test glfw3)
### Load External Project
include(ExternalProject)
ExternalProject_Add(
### Target name
GLFW3
### Path to Git repository
GIT_REPOSITORY https://github.com/glfw/glfw
### Specify TAG
GIT_TAG 3.1.2
### Path to source tree
SOURCE_DIR ${DEPEND_LIB_ROOT}/src/glfw
### Specify Generator
CMAKE_GENERATOR "NMake Makefiles"
### Add cmake args CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} -DCMAKE_BUILD_TYPE=Release
### Path to build tree
BINARY_DIR ${DEPEND_LIB_ROOT}/build/glfw
BUILD_COMMAND nmake INSTALL_COMMAND nmake install
)
### Test depends
add_dependencies(Test GLFW3)
ExternalProject 로드
include(ExternalProject)
에서
ExternalProject_Add
를 사용할 수 있게 됩니다.외부 프로젝트 설정
ExternalProject_Add
에서 외부 라이브러리를 설정하지만 인수로 어떤 단계에서사용되는가 하는 것이 정해져 있습니다. 자주 사용되는 것은 다음 단계라고 생각합니다.
이번 예제를 바탕으로 각 단계에서 무엇을 하고 있는지 설명합니다.
Download step
다운로드 단계에서는 외부 프로젝트의 위치 등에 대해 설정할 수 있습니다.
이 예에서는
GIT_REPOSITORY
로 지정된 URL에서 clone하여 GIT_TAG
로 지정했습니다.태그를 checkout하도록 지시합니다.
ExternalProject_Add(
GLFW3
GIT_REPOSITORY https://github.com/glfw/glfw
GIT_TAG 3.1.2
)
Update step
이번에는 사용하지 않습니다. 플랫폼 별 patch 등은 이 단계에서 적용합니다.
Configure Step
ExternalProject_Add(
SOURCE_DIR path/to/source
CMAKE_GENERATOR "NMake Makefiles"
CMAKE_ARGS -DCMAKE_INSTALL_REFIX="..."
)
소스 파일의 배치 장소, 및 CMake 의 제네레이터, 인스톨처의 지정등을 실시하고 있습니다.
빌드 단계
ExternalProject_Add(
##...
BINARY_DIR ${DEPEND_LIB_ROOT}/build/glfw
BUILD_COMMAND nmake
)
빌드 관련 설정입니다.
BINARY_DIR
이 예제는 Configure step에서 지정한 설정으로 cmake 실행디렉토리입니다.
BUILD_COMMAND
는 Configure step 에서 지정한 제너레이터와 함께합시다.Install step
ExternalProject_Add(
##...
INSTALL_COMMAND nmake install
)
설치 명령 지정입니다. Linux계라면
make install
가 될까 생각합니다.이 근처 별도 환경마다 체크하는 기구가 필요할까 생각합니다.
종속성 추가
ExternalProject_Add
에 추가된 새 타겟과 기존 타겟의 종속성써주세요. 이렇게하면 먼저 GLFW3 빌드 -> Test 빌드가됩니다.
add_dependencies(Test GLFW3)
요약
를 보시면 알겠지만 이번에 사용한 Git 이외에도 bzr 이나 Mercurial 등 꽤 다양한 툴로 소스의 취득이 가능합니다. 단지 autotools로 작성된 프로젝트라면 Windows 환경에서는 MSYS2에 의존하거나 등이 필요 수 있습니다.
Reference
이 문제에 관하여(CMake ExternalProject 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/trairia/items/d20860d61f0e1eb2fb72텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)