에 많은 파일이 자동으로 만들에 의해 예

코 키퍼
Feb22, 2017·4 분 읽

를 배우려고 할 때에 많은 파일이 자동으로 만들어 나는 찾을 수 없습니다 어떤 좋은 소개합니다. CMake 문서는 매우 포괄적이지만 초보자에게는 적합하지 않습니다. CMake Wiki 에 링크 된 몇 가지 유용한 자습서가 있지만 대부분은 매우 구체적인 문제 만 다루거나 너무 기본적입니다. 그래서 나는이 짧은 CMake 소개를 문서를 통해 작업하고 stackoverflow 질문을 한 후에 발견 한 것의 증류 버전으로 썼습니다.

진행중인 작업이며 지속적으로 개선하려고 노력할 것입니다.

에 많은 파일이 자동으로 만들어 메타를 구축할 수 있는 도구를 생성하는 기본 구축에 대한 스크립트를 다양한 플랫폼:

  • 유닉스 파일
  • Xcode
  • Visual Studio
  • CodeBlocks
  • Eclipse
  • 다…

전체 목록 보기에 많은 파일이 자동으로 만들어 생성기입니다.

우리는 하나의 간단한 응용 프로그램을 가지고 있다고 가정 할 수 있습니다.c 파일.

우리 프로젝트의 루트에CMakeLists.txt파일을 작성하여.

cmake_minimum_required(VERSION 2.8)project(app_project)add_executable(myapp main.c)install(TARGETS myapp DESTINATION bin)

그게 우리가 필요한 수축으로 우리의 응용 프로그램을 사용 가능한 모든 발전기.

add_executable는 링크 된 모든 소스 파일로 바이너리를 정의합니다.

install는 cmake 에게 설치 디렉토리의bin디렉토리에 바이너리를 설치하도록 지시합니다.

Building

CMake 는 out-of-source 빌드를 지원하므로 컴파일 된 모든 코드는 소스와 별도의 디렉토리로 이동합니다.

를 시작하고 구축을 우리는 새 폴더를 만듭니다.

mkdir _build
cd _build

호출에 많은 파일이 자동으로 만들어진 프로젝트의 경로를’s root(이 경우 부모 폴더가):

cmake ..

이를 생성하는 스크립트를 구축 기본값으로 사용하기 리눅스에서/OSX 이해야 Make.

기본적으로 cmake 는 빌드를 시스템 디렉토리에 설치합니다.
을 정의 사용자 정의 설치 디렉토리는 우리가 단순히 전달하기에 많은 파일이 자동으로 만들어:

cmake .. -DCMAKE_INSTALL_PREFIX=../_install

를 실행하는 스크립트를 구축할 수 있는 단순히 사용하 Makefile:

make
make install

실행할 수 있습니다 우리의 바이너리에서 설치 디렉토리:

../_install/bin/myapp

만약 우리가 사용하고 싶다고 다른 발전기 우리는 그것을 전달하기에 많은 파일이 자동으로 만들어 사용하는-G매개변수:

cmake .. -GXcode

이 출력할 것입니다 쉽게 구성되어 Xcode 프로젝트를 구축합니다.

를 사용하여 많은 파일이 자동으로 만들어 라이브러리와

라이브러리를 빌드하기 위해서는 우리가 사용하는 비슷한 스크립트:

cmake_minimum_required(VERSION 2.8)project(libtest_project)add_library(test STATIC test.c)install(TARGETS test DESTINATION lib)
install(FILES test.h DESTINATION include)

에 많은 파일이 자동으로 만들어를 구축 라이브러리로libtest.a설치로 lib 폴더의 설치 디렉토리에 있습니다.
우리는 또한 설치 단계에 공개 헤더 파일을 포함하고 cmake 에게include에 넣으라고 지시합니다.

대신에 정적 라이브러리는 우리를 구축할 수 있는 공유 lib 뿐만 아니라.

add_library(test SHARED test.c)

링크 라이브러리는 실행 파일로 많은 파일이 자동으로 만들어

을 확대할 수 있습니다 우리의 실행 위에서 연결하여 우리의 libray 에libtest.a.

라이브러리의 디렉토리를 myapp 프로젝트에 하위 디렉토리로 추가하는 것으로 시작하겠습니다.

이제 CMakeLists 에 정의 된 라이브러리를 사용할 수 있습니다.myapp 의 CMakeLists 에서 libtest_project 의 txt.txt:

cmake_minimum_required(VERSION 2.8)project(myapp)add_subdirectory(libtest_project)add_executable(myapp main.c)target_link_libraries(myapp test)install(TARGETS myapp DESTINATION bin)

add_subdirectorytest에서 정의 libtestproject 사용할 수 있다.
에서target_link_libraries우리는 CMake 에게 그것을 우리의 실행 파일에 연결하라고 말한다. CMake 는 myapp 에 연결하기 전에 먼저 빌드 테스트를 수행해야합니다.

포함하여 외부 라이브러리를 사용하여 다른 시스템을 구축

는 동안에 많은 파일이 자동으로 만들 즐기는 증가하는 관심있는 여전히 많은 라이브러리를 사용하는 시스템을 구축과 같은 유닉스 파일. 빌드 스크립트를 다시 작성할 필요없이 CMake 프로젝트에서 사용할 수 있습니다.

우리가 필요한 것은 많은 파일이 자동으로 만들의 지원을 외부 프로젝트와 수입된 라이브러리:

ExternalProject_Add(project_luajit
URL http://luajit.org/download/LuaJIT-2.0.1.tar.gz
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/luajit-2.0.1
CONFIGURE_COMMAND ""
BUILD_COMMAND make
INSTALL_COMMAND make install
PREFIX=${CMAKE_CURRENT_BINARY_DIR}/luajit-2.0.1
)ExternalProject_Get_Property(project_luajit install_dir)add_library(luajit STATIC IMPORTED)set_property(TARGET luajit PROPERTY IMPORTED_LOCATION ${install_dir}/lib/libluajit-5.1.a)add_dependencies(luajit project_luajit)add_executable(myapp main.c)include_directories(${install_dir}/include/luajit-2.0)target_link_libraries(myapp luajit)

ExternalProject_AddBUILD_COMMANDINSTALL_COMMANDCMakeLists.txt에 외부 프로젝트 실행합니다.
우리의 경우 Makefile 을 사용하여 구축 된 luajit 라이브러리를 사용하려고합니다.

add_libraryIMPORTED_LOCATION을 제공합니다.
호출ExternalProject_Addadd_dependencies를 호출하여 가져온 라이브러리를 외부 프로젝트에 종속시킵니다.

마지막으로 가져온 라이브러리를target_link_libraries가있는”일반”라이브러리처럼 연결할 수 있습니다.나는 이것이 내가 할 수있는 유일한 방법이라고 생각한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다