반응형
여러 파일로 구성된 프로그램 빌드하기
$gcc -o calc calc.c eval.c stack.c token-c -lm
일일이 타이핑하기 귀찮음과 매번 모든 소스 파일을 새로 컴파일해야 합니다. 이를 위한 대안으로
shell script를 이용하는 것입니다.
$cat mybuildscript
gcc -o calc calc.c eval.c stack.c token.c -lm
$./mybuildscript
문제점
- 하나의 파일만 수정한 경우에도 매번 모든 소스파일을 다시 컴파일
- 규모가 큰 프로젝트의 경우 엄청난 시간 낭비
- 새로 컴파일 할 필요가 이쓴 소스 파일만 자동으로 찾아서 컴파일해주는 기능이 필요
make와 Makefile
의존성 : 프로그램 빌드에는 순서가 있음
- 가령 foo.c 파일이 bar.h 파일을 include 한다고 가정할 때
- foo.c는 bar.h에 의존합니다. 왜냐하면 bar.h가 수정되면 foo.c를 새로 컴파일해야하기 때문입니다.
Makefile
- 파일들간의 의존성을 기술하는 파일
- 프로그램을 빌드하는 방법을 정의
유틸리티 파일 make
- Makefile을 읽어서 지정된 방법으로 프로그램을 빌드하는 프로그램
calc 이 줄은 의존성의 리스트입니다. calc는 타겟입니다. calc를 만들려면 4개의 오브젝트 파일이 변경이 되었다면 calc의 실행 파일을 새로 만들어야 한다는 뜻입니다.
gcc -o -lm 은 타겟을 만드는 방법을 기술합니다. gcc라는 명령을 실행하고 -o 오브젝트를 넣어주고 lm을 해주면 됩니다. gcc앞에는 tab 문자를 넣어주어야 합니다.
Build Tool
C / C++
오토 툴(automake, autoconf) : makefile과 쉘 스크립트 기반의 빌드 툴, 여전히 가장 많이 사용
$./configure
$ make
cmake : 최신의 빌드시스템
Java
Ant, Maven, Gradle
Python
waf
CTAGS
프로그램 소스 파일에서 각종 심볼들에 대한 TagFile(인덱스 혹은 데이터베이스)를 구성하여, 심볼들을 정의한 위치와 참조관계를 빠르게 탐색할 수 있는 Software Tool
사용법
인덱스(탐색을 위한 데이터베이스) 생성
ctags <파일 리스트> 또는 ctags-R
- CTAGS-r은 현재 디렉토리 및 모든 하위 디렉토리의 파일들에 대해 tag를 생성
vi(vim)에서 ctags를 사용하기 위한 설정
- vi ~/.vimrc 명령으로 vimrc 파일을 열고 다음과 같이 설정
- set tags = ./tags
- vi 명령으로 소스 파일을 읽고 ctags 명령을 사용
- tj<심볼> 또는 심볼에서 '^]'를 누름 : 해당 심볼이정의된 위치로 이동함
- po 또는 ^t : 이전 위치로 이동
반응형
'IT 프로그래밍 > 오픈소스소프트웨어' 카테고리의 다른 글
[오픈소스소프트웨어] Git (1) | 2024.11.01 |
---|---|
리눅스 정리 (0) | 2024.10.20 |
[오픈소스 소프트웨어] 10-2 프로그램 개발 (1) | 2024.10.15 |
[오픈소스소프트웨어] chap10.1 C, C++ 개발 (0) | 2024.10.14 |
[오픈소스소프트웨어] chap10.1 C, C++ 개발 (0) | 2024.10.14 |