도서 소개
소프트웨어 빌드의 기본 개념부터 숙련된 전문가급 조언을 제공한다. 가장 널리 사용되는 GNU Make와 Ant, SCons, CMake를 활용하여 예제를 다루고 있어 실무에 바로 적용할 수 있다. 이뿐만 아니라 빌드 변형과 버전 관리, 확장 등의 고급 주제까지 다루어 고급 개발자에 필요한 좋은 내용을 제공한다.
출판사 리뷰
★ 이 책에서 다루는 내용 ★
■ 소스 트리, 빌드 도구, 컴파일 도구와 같은 빌드 시스템의 기본 개념
■ 가장 많이 사용되는 GNU Make, Ant, SCons, CMake, 이클립스 IDE, 5가지 빌드 도구의 특징 비교
■ 정확한 종속성 확인 방법과 효율적인 증분 빌드 방법
■ 메타 데이터를 활용한 디버깅, 프로파일링, 문서화 작업
■ 복잡한 버전 관리 시스템, 빌드 머신, 컴파일 도구와 관련된 모범 사례
★ 이 책의 대상 독자 ★
이 책은 소프트웨어 개발자를 위해 중점적으로 기술했지만, 소프트웨어 개발자가 아닌 사람에게도 유용할 수 있다.
■ 개발자: 여러분이 수년간 소프트웨어를 개발해 왔지만 빌드 시스템에 대해 잘 모른다면, 빌드 시스템을 어떻게 만들고 유지 보수해야 하는지를 배운다. 또한 빌드 프로세스와 관련된 여러 도구에 대해서도 배운다.
■ 관리자: 이 책을 통해 상위 수준에서의 개념과, 개발자와 대화하는 방법을 배운다. 이를 통해 여러분의 팀이 하는 일을 평가할 수 있으며, 팀이 나아갈 방향을 설정할 수 있을 것이다.
■ 빌드 전문가: 빌드 시스템에 대한 많은 경험이 있다면 무엇인가 새로운 점을 기대할 것이다. 이 책은 사용해보지 않았던 최신 빌드 도구들과 규모가 큰 빌드 시스템에서 확장성과 성능에 관한 내용을 제공할 것이며, 새로운 빌드 프레임워크를 만들 때 여러분의 빌드 시스템을 다시 한 번 생각할 기회를 제공한다.
★ 이 책의 구성 ★
1부, '빌드 시스템의 기초'에서는 빌드 시스템에 익숙하지 않은 개발자를 위해, 빌드 시스템에 대한 기본적인 사항을 소개한다. 1부를 생략해도 되는 경험이 많은 개발자이더라도 빌드 시스템의 기본적인 큰 그림을 확인할 수 있다. 예를 들어 C/C++ 개발자라면 C#에 대한 새로운 점을 배울 수 있다.
1장, '빌드 시스템 개요'에서는 소스 트리와 오브젝트 트리, 빌드 도구, 컴파일 도구 등과 같은 빌드 시스템에 대한 상위 개념을 소개한다.
2장, 'Make 기반 빌드 시스템'에서는 'makefile을 한 번도 작성해 보지 않은 개발자를 위해 가벼운 튜토리얼을 제공한다.
3장, '프로그램의 런타임 뷰'에서는 빌드 시스템을 구축하는 데 필요한 것들을 설명할 목적으로, 컴퓨터에서 실행하는 프로그램 구조를 설명한다.
4장, '파일 타입과 컴파일 도구'에서는 C/C++와 자바, C# 예제를 통해 각 빌드 프로세스에서 사용되는 여러 입/출력 파일에 대한 상세한 내용을 다룬다.
5장, '하위타겟과 빌드 변형'에서는 후반부에서 더욱 자세히 다룰 빌드 변형에 대한 기본 개념을 설명한다.
1부를 읽고 나면 빌드 시스템 디자인에 대한 기본적인 개념을 얻게 될 것이다.
2부, '빌드 도구'에서는 다섯 개의 빌드 도구를 비교한다. 이 빌드 도구들은 대중성과 소프트웨어 빌드 방법을 고려해 선택했다. 각 장에서는 먼저 빌드 도구에서 사용되는 구문을 소개한 후 빌드 도구의 주요한 사용 시나리오를 설명한다. 의미 있는 비교를 위해 모든 장에서 같은 예제를 사용했다.
6장, 'Make'에서는 C/C++ 개발에서 가장 널리 사용되는 GNU Make 도구에 대해 설명한다.
7장, 'Ant'에서는 자바에서 사실상 표준으로 사용되는 Ant 빌드 도구에 대해 설명한다.
8장, 'SCons'에서는 비교적 최신 빌드 도구인 SCons를 다룬다. SCons는 빌드 프로세스를 서술할 때 파이썬(Python) 언어를 사용한다.
9장, 'CMake'에서는 이 단원의 핵심주제인 CMake를 살펴본다. CMake는 빌드 프로세스에 관한 상위 수준 서술을 토대로 Make와 같은 네이티브 빌드 시스템을 생성한다.
10장, '이클립스'에서는 이클립스 IDE에서의 빌드 관련 기능에 대해 설명한다.
2부를 읽고 나면 최신 빌드 도구의 종류와 각 빌드 도구의 장단
작가 소개
저자 : 피터 스미스
캐나다 밴쿠버에 있는 아라피키 솔루션(Arapiki Solutions, www.arapiki.com)의 프리랜서 컨설턴트다. 1998년 브리티시 컬럼비아 대학(University of British Columbia)에서 컴파일러와 프로그래밍 언어 디자인에 관해 박사학위를 취득했으며, 수년 동안 학부 학생들을 위해 컴파일러 디자인과 프로그래밍 언어 디자인, 소프트웨어 공학, 컴퓨터 네트워크를 강의했다. 또한 3년 동안 OOPSLA(Object-Oriented Programming, Systems, Languages & Application) 컨퍼런스 위원회의 일원으로 활동했다. 주로 통신 관련 산업에서 소프트웨어 엔지니어, 프로젝트 매니저, 툴 지원 팀의 매니저로 활동했다. 최근에는 고객의 생산성 향상을 위한 신규 소프트웨어 도구의 개발이나 적용 관련한 컨설팅 업무를 하고 있다.
목차
1부 _ 빌드 시스템의 기초
1장 빌드시스템 개요
빌드 시스템이란?
___컴파일형 언어
___인터프리트형 언어
웹 기반 애플리케이션
___단위 테스트
___정적 분석
___문서 생성
빌드 시스템의 구성 요소
___버전 관리 도구
___소스와 오브젝트 트리
___컴파일 도구와 빌드 도구
___빌드 머신
___릴리스 패키징과 타겟 머신
빌드 프로세스와 빌드 기술
빌드 시스템을 어떻게 사용하는가?
___빌드 관리 도구
빌드 시스템 품질
정리
2장 Make 기반 빌드 시스템
계산기 프로그램 예제
간단한 Makefile 작성
Makefile의 간결화
빌드 타겟 추가
프레임워크 사용
정리
3장 프로그램의 런타임 뷰
실행 프로그램
___네이티브 기계어 코드
___모놀리식 시스템 이미지
___전체가 인터프리트되는 프로그램
___인터프리트된 바이트 코드
라이브러리
___정적 링크
___동적 링크
설정 파일과 데이터 파일
분산형 프로그램
정리
4장 파일 타입과 컴파일 도구
C/C++
___컴파일 도구
___소스 파일
___어셈블리 언어 파일
___오브젝트 파일
___실행 프로그램
___정적 라이브러리
___동적 라이브러리
___C++ 컴파일
자바
___ 컴파일 도구
___소스 파일
___오브젝트 파일
___실행 프로그램
___ 라이브러리
C#
___컴파일 도구
___소스 파일
___실행 프로그램
___라이브러리
기타 파일 타입
___ UML 기반 코드 생성
___그래픽 이미지
___XML