개요
Autotools를 한마디로 표현하면 리눅스환경에서의 visual studio라고 할 수 있다.cpp와 h파일과 디렉토리들의 상관관계들을 자동으로 판단해서 complie해주는 것이다. 즉 사용자는 Makefile.am 과 초기화를 위한 configure.ac파일만 작성하면 나머지는 macro에 의해 만들어진다.
순서
1. configure.ac 에 Makefile 이 필요로 하는 사항들을 기록한다.
2. Makefile.am 에 이들 가변수를 사용하여 Makefile 의 초안을 작성한다.
3. configure 실행시에 configure.ac 에 지정한 항목들이 check 되면서 Makefile.am 에서 필요한 정보들이 유효한 값들로 치환된다.
4. Makefile.am 이 유효한 값들을 가지면서 Makefile 이 된다.
configure.ac
- autoconf, automake 의 입력값autoconf 는 이를 받아서 configure 파일을 만든다.automake 는 이를 makefile.am 과 함께 받아 makefile.in 을 만든다.
- 보통 이미 지정된 macro 를 사용하여 원하는 정보를 얻거나 설정할수있다
Makefile.am
- automake 의 입력값
- 기본적인 Makefile 의 틀을 지니고 있지만, configure 에 따라 결정되는 변수들을 사용하고 있다.
- Makefile.am 은 해당 소스를 컴파일 하고자 하는 위치면 어디든 놓이게 된다.
- 가장 상위 directory 의 Makefile.am 에는 컴파일할 하위 directory 를 정하게 된다.
- configrure.ac 에서 정의되고 configure 를 통해 유효값들을 가지게 되는 변수를 가져오기 위해 @variable@ 을 사용한다. _PROGRAMS, _SCRIPTS, _SOURCES 등 지정된 primary 들이 있고 앞에 인스톨될 위치나 프로그램명, 프로그램의 소스등을 지정하게 되어있다.
Process
- aclocal : configure.ac –> aclocal.m4
- autoheader : configure.ac + aclocal.m4 –> config.h.in
- autoconf : configure.ac + aclocal.m4 –> configure
- automake : configure.ac + aclocal.m4 + Makefile.am –> Makefile.in
- configure : Makefile.in –> Makefile
입력 명령어 순서 |
aclocal
autoheader
autoconf
automake –add-missing -copy
./configure
make
make check
make install
더 공부하고싶은 분들을 위해
Autotools & Makefile
——————————————————-
http://wiki.kldp.org/wiki.php/DocbookSgml/Autotools-KLDP
https://wiki.kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make-2.html#ss2.2
https://minimonk.net/35341:47https://www.dartmouth.edu/~rc/classes/intro_openmp/compile_run.html
https://linuxspot.tistory.com/45#recentTrackback
http://wiki.kldp.org/wiki.php/DocbookSgml/Autotools-KLDP
https://twinw.tistory.com/138
https://wiki.kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make-2.html#ss2.2
https://minimonk.net/3534
https://stackoverflow.com/questions/9037434/enable-openmp-checks-and-flags-in-autoconf-and-automake
https://yechan821.tistory.com/4?category=786261
리눅스환경에서의 visual studio같은 autotools에 대한 설명 잘 들었습니다. GUI하고 debugging측면에서 봤을때, autotools는 어떤가요? 예를들어 break point를 걸 수 있다거나 등등의 기능도 지원하나요?