AUTOTOOLS 란
-
여러 파일로 나누어진 C 언어 프로젝트를 빌드하려면 일일히 컴파일 하고 나서, 목적파일을 링크해줘야한다.
-
따라서, 손이 많이 가게 된다.
AUTOTOOLS
는 이러한 작업을 자동으로 해주는 도구이다.
소스 코드 작성
- 우선 다음과 같은 명령어로 프로젝트를 생성할 디렉터리를 하나 만들어준다.
mkdir multimodule
cd multimodule
-
multimodule
이라는 이름으로 만들어주었다. -
그리고 나서,
src
와test
디렉터를 만들어주고, 나서 간단한 코드를 작성한다. -
두 개의 숫자를 입력받고 나서, 최대 값을 반환하는 간단한 예제이다.
-
아래 소스코드는 multimodule/src 디렉터리 안에 작성하면 된다.
util.c
int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
util.h
int max(int a, int b);
main.c
#include <stdio.h>
#include "util.h"
int main(int argc, char* argv[]) {
int a, b, max_num;
printf("please input two numbers: ");
scanf("%d %d", &a, &b);
max_num = max(a, b);
printf("max number is %d\n", max_num);
return 0;
}
MAKE 파일 작성
- 프로젝트 루트 폴더로 올라가서,
Makefile.am
파일을 작성해준다.
Makefile.am
AUTOMAKE_OPTIONS = subdir-objects
bin_PROGRAMS = multimodule
multimodule_SOURCES = \
src/main.c \
src/util.c
-
그리고 나서, 터미널에서
autoscan
명령어를 입력한다. -
그려면
configure.scan
이라는 파일이 자동으로 생성되고, 템플릿에 원하는 내용을 채워 넣는다.
AC_PREREQ([2.69])
AC_INIT([multimodule], [0.0.1], [])
AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
-
그리고 나서, 이 파일 이름을
configure.ac
로 변경한다. -
그런 후에 터미널에 아래 명령어를 입력한다.
autoreconf -v -i
- 해당 명령어가 정상적으로 실행되었으면,
configure
실행파일이 생성되고 이를 실행하고 나서,Makefile.am
파일이 생성되었다면 마지막으로make
명령어를 입력하면 프로그램이 빌드되고 실행 파일이 생성되게 된다.
참고 문헌
>> Home