• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
CMake 소개
 

CMake 소개

on

  • 4,511 views

 

Statistics

Views

Total Views
4,511
Views on SlideShare
4,222
Embed Views
289

Actions

Likes
3
Downloads
1
Comments
0

9 Embeds 289

http://nberserk.tistory.com 190
http://www.andstudy.com 49
http://andstudy.com 31
http://www.slideshare.net 10
http://www.techgig.com 2
https://twimg0-a.akamaihd.net 2
http://parkpd.egloos.com 2
http://www.linkedin.com 2
http://blog.naver.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    CMake 소개 CMake 소개 Presentation Transcript

    • Cmake소개cross-platform build system generator
      2010-06-08
      김명관
    • CMake
      Kitware Inc.
      오픈소스/ BSD 라이선스
      빌드 시스템 제너레이터
    • 지원 플랫폼
      운영체제
      Linux, *BSD, Unix, Mac OS X, MS Windows
      빌드 시스템
      Makefile(Unix, NMake, Borland, Watcom, MinGW, MSYS, Cygwin)
      Visual Studio 6, 7, 8, 9, 10
      Kdevelop, Eclipse, XCode, Code::Block
    • 빌드 시스템
    • 빌드 시스템 제너레이터
      빌드 시스템에 독립적인 설정파일에 빌드과정을 기술하고,
      특정 빌드 시스템의 프로젝트 설정을 생성(Generate)한다.
    • 빌드 과정
      CMakeLists.txt
      CMake
      추가
      Native Build System
      .vcproj/makefile/etc
      Native Build Tools
      Visual Studio/Eclipse/KDevelop/etc
      기존
      Excutables/Libraries
      .exe/.dll/.lib/.a/.so/.dylib
    • 왜?
      프로젝트 구성이 특정 빌드 시스템으로부터 독립
      다양한 빌드 시스템의 설정을 통합관리
      복잡한 빌드 환경을 쉽게 관리
      단순하고 직관적인 문법
      유연하고 확장성이 뛰어남
    • 한계
      직접 Make를 수행하지 않으므로
      대상 네이티브 빌드 시스템이 가지는 한계를 넘지 못함
    • 스크립트 문법
      COMMAND(args...)
       
      # 변수/리스트
      SET(Foo a b c)
      COMMAND(${Foo})
      COMMAND(a b c)
       
      # 분기
      IF(var)
      SOME_COMMAND(...)
      ENDIF(var)
       
      # 반복
      FOREACH(f ${VAR})
      MESSAGE(${f})
      ENDFOREACH(f)
    • 데모 : hello, World
    • 데모 : static lib
    • KDE 사례 Why the KDE project switched to CMake -- and how
      가장 큰 FOSS(Free and Open Source Software)프로젝트 중 하나
      1200명 이상의 참여 개발자
      4백만 줄이 넘는 소스
      10만 명 이상의 사용자를 위한 80가지 언어 지원
      매일 300번 이상의 커밋
    • 빌드 시스템으로 Autotools를 사용
      전체구조를 이해하기 어려워 Autohell이라 불리움
      SCons(파이썬 기반 빌드 툴) 검토
      SCons는 대형 프로젝트에 적용 할 만큼 성숙하지 못함
      특히 Linux가 아닌 플랫폼에서 문제가 됨
      CMake
      성공적으로 진행돼 KDE4 버전부터 정식 적용
    • CMake를 사용하는 프로젝트
      Allegro library
      Armadillo - linear algebra library
      Avidemux
      awesome - window manager
      Blender 3D
      Boost C++ Libraries
      Bullet Physics Engine
      Chicken
      Chipmunk physics engine
      clang
      Conky
      Doomsday Engine
      Drishti
      Fennel
      Gammu
      GDCM
      Gmsh
      Hypertable
      hugin
      IGSTK
      Insight Segmentation and Registration Toolkit
      KDE (starting with version 4)
      Kicad
      LMMS
      LLVM
      MariaDB
      MiKTeX
      MuseScore
      MySQL
      OGRE
      OpenSceneGraph
      OpenCV
      OpenFLUID
      ParaView
      Poppler
      PvPGN
      Quantum GIS
      Raw Therapee
      Rem
      Ryzom Core
      Scribus
      Second Life
      SuperTux
      Slicer
      Stellarium
      The Visualization Toolkit
      VXL
    • Converters http://www.cmake.org/Wiki/CMake#Converters_from_other_buildsystems_to_CMake
      automake/autotools/autoconf
      am2cmake (requires Ruby)
      Alternative Automake2CMake (requires PHP)
      Converting autoconf tests
      Qmake
      qmake converter (requires Ruby)
      Visual Studio
      vcproj2cmake.rb (requires Ruby)
      vcproj2cmake.ps1(PowerShell version)
    • - 끝 -