Autoconf는 소프트웨어 소스 코드를 다양한 유닉스 계열 시스템에서 빌드할 수 있도록 자동으로 구성 스크립트를 생성하는 도구이다. 주로 GNU 프로젝트에서 개발된 일련의 소프트웨어 빌드 자동화 도구 중 하나로, 사용자의 시스템 환경을 탐지하고, 해당 환경에 맞는 Makefile 및 구성 파일을 생성하는 데 사용된다.
개요
Autoconf는 소스 코드 배포 시, 다양한 운영체제와 컴파일러 환경에서 호환성을 보장하기 위한 목적으로 설계되었다. 이 도구는 configure 스크립트를 생성하는 데 중점을 둔다. 개발자는 configure.ac라는 입력 파일에 시스템 검사 조건을 기술하면, Autoconf는 이를 기반으로 유닉스 계열 시스템에서 실행 가능한 셸 스크립트인 configure를 생성한다. 생성된 configure 스크립트는 사용 중인 시스템의 기능(예: 라이브러리 존재 여부, 함수 지원 여부 등)을 검사한 후, 적절한 Makefile 템플릿(Makefile.in)을 기반으로 빌드에 필요한 Makefile을 생성한다.
Autoconf는 주로 Automake, Libtool과 함께 사용되며, 이들 도구와 함께 GNU 빌드 시스템(GNU Build System) 또는 일명 "Autotools"라고 불리는 소프트웨어 구성 환경을 구성한다. 이 조합은 오픈소스 소프트웨어 개발, 특히 포터블 C/C++ 프로젝트에서 오랫동안 널리 사용되어 왔다.
어원/유래 'Autoconf'는 "Automatic Configuration"의 약자로, 자동으로 구성(configure)하는 도구라는 의미를 지닌다. 이 도구는 1990년대 초반 David MacKenzie에 의해 GNU 프로젝트의 일환으로 개발되기 시작하였다. 초기에는 소프트웨어 프로젝트의 이식성(portability) 문제를 해결하기 위해 각 시스템마다 수작업으로 구성 스크립트를 작성하던 방식에서 벗어나, 자동화된 방식의 도입이 필요해지면서 등장하게 되었다.
특징
- 시스템 독립성: Autoconf는 다양한 유닉스 계열 플랫폼에서 동작할 수 있도록 설계되어 있으며, 시스템 검사를 통해 특정 시스템에 맞는 조건부 컴파일 지시자를 생성한다.
- 확장성: 사용자 정의 매크로를 정의하거나, M4 매크로 언어를 활용하여 복잡한 시스템 검사 로직을 구현할 수 있다.
- 자동화된 구성:
configure스크립트는 빌드 환경 설정을 자동화함으로써 사용자의 수작업을 최소화한다. - 포터빌리티 강화: 이식성을 높이기 위해 다양한 컴파일러, 라이브러리, 시스템 호출의 존재 여부를 자동으로 탐지한다.
관련 항목
- Automake
- Libtool
- GNU Build System (Autotools)
- M4 (매크로 프로세서)
- Configure 스크립트
- Makefile
- ./configure, make, make install 빌드 패턴