이 두 파일은 주로 오픈 소스 프로젝트에서 볼 수 있습니다.
무엇을위한 것이며 어떻게 작동합니까?
답변
Makefile.am
프로그래머 정의 파일에 의해 사용되는 automake
생성]하는 Makefile.in
파일 ( .am
용 스탠드 우토의 m의 아케). 일반적으로 소스 타르볼에서 볼 스크립트가 사용할 를 생성하는configure
Makefile.in
Makefile
.
configure
스크립트 자체가 하나라는 프로그래머 정의 파일에서 생성됩니다 configure.ac
또는 configure.in
(사용되지 않음). 내가 선호하는 .ac
(대한 우토 C 는 생성에서 차별화 이후 ONF) 파일과 그런 식으로 내가 같은 규칙을 가질 수 있습니다 실행됩니다 . 파일은 생성 된 파일이므로 일반적으로 Git, SVN, Mercurial 또는 CVS와 같은 수정 시스템에 저장되지 않고 파일이됩니다.Makefile.in
make dist-clean
rm -f *.in
.ac
GNU Autotools 에 대해 더 읽어보십시오 . 에 대해 읽어 make
와 Makefile
먼저 다음에 대해 자세히 알아보기 automake
, autoconf
, libtool
, 등
답변
간단한 예
http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html 에서 뻔뻔스럽게 조정 되었으며 Ubuntu 14.04 Automake 1.14.1에서 테스트되었습니다.
Makefile.am
SUBDIRS = src
dist_doc_DATA = README.md
README.md
Some doc.
configure.ac
AC_INIT([automake_hello_world], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
src / Makefile.am
bin_PROGRAMS = autotools_hello_world
autotools_hello_world_SOURCES = main.c
src / main.c
#include <config.h>
#include <stdio.h>
int main (void) {
puts ("Hello world from " PACKAGE_STRING);
return 0;
}
용법
autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autoconf_hello_world
sudo make uninstall
출력 :
Hello world from automake_hello_world 1.0
노트
-
autoreconf --install
를 포함하여 Git에서 추적해야하는 여러 템플릿 파일을 생성합니다Makefile.in
. 처음으로 만 실행하면됩니다. -
make install
설치 :- 이진
/usr/local/bin
README.md
에/usr/local/share/doc/automake_hello_world
- 이진
GitHub 에서 사용해보십시오.
답변
개발자 실행 autoconf
하고 automake
:
1) autoconf를이 -로 선적 생성 구성 스크립트
설치 나중에 것 ( 실행 를 만들기 위해를 Makefile )
2) Automake는 -로 선적 생성 Makefile.in의 데이터 파일
( 구성 나중에 것입니다 읽어 하기 위해 Makefile을 )
- Automake는 이식 가능한 GNU 표준 호환 Makefile 작성을 도와줍니다 .
- ‘Automake는 “복잡한 생성 Makefile.in 간단한들로부터 Makefile.am 의
설치 프로그램 실행 configure
, make
및 sudo make install
:
./configure # Creates Makefile (from Makefile.in).
make # Creates the application (from the Makefile just created).
sudo make install # Installs the application
# Often, by default its files are installed into /usr/local
입력 / 출력 맵
아래 표기법은 대략 다음과 같습니다 : 입력-> 프로그램-> 출력
개발자는 다음을 실행합니다.
configure.ac -> autoconf를 -> 구성 (스크립트) — (*. AC = 우토 다 ONF) configure.in -> autoconf를 -> 구성 (스크립트) — (
configure.in
감가 상각 사용 configure.ac.)
Makefile.am-> automake- > Makefile.in ———– (*. am = a uto m ake)
INSTALLER가 다음을 실행합니다.
Makefile.in-> 구성 -> Makefile (*. in = in 넣어 파일)
Makefile- > make ———-> (다운로드 또는 임시 디렉토리에 새 소프트웨어를 넣습니다)
Makefile- > make install > (시스템 디렉토리에 새 소프트웨어를 넣습니다)
” autoconf 자동으로 구성 소프트웨어 소스 코드 패키지에 쉘 스크립트를 생성 M4 매크로의 확장 패키지입니다.이 스크립트는 UNIX와 같은 수동 사용자 개입없이 시스템. Autoconf에 많은 종류의 패키지를 적용 할 수는에서 패키지의 구성 스크립트를 생성 “M4 매크로 호출 형식으로 패키지에서 사용할 수있는 운영 체제 기능을 나열하는 템플릿 파일”
” automake 는 GNU 코딩 표준을 준수하는 Makefile.in 파일을 자동으로 생성하는 도구입니다. Automake는 Autoconf를 사용해야합니다.”
매뉴얼 :
무료 온라인 자습서 :
예:
LibreOffice를 구축하는 데 사용되는 기본 configure.ac 는 12k 개가 넘는 코드 라인이지만 하위 폴더에는 57 개의 다른 configure.ac 파일도 있습니다.
이로부터 생성 된 구성 은 41k 줄 이상의 코드입니다.
그리고 그 동안 Makefile.in 및 메이크 코드의 양에만 493 라인이다. 그러나 하위 폴더에는 Makefile.in이 768 개 더 있습니다.
답변
참고 :
Makefile.am-자동 작성을위한 사용자 입력 파일
configure.in-autoconf에 대한 사용자 입력 파일
autoconf는 configure.in에서 configure를 생성합니다
automake는 Makefile.am에서 Makefile.in을 생성합니다.
configure는 Makefile.in에서 Makefile을 생성합니다.
예를 들어 :
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in