저는 다소 새로운 C++ 프로그래머입니다. SDL 라이브러리를 사용하여 매우 간단한 게임을 만들었습니다. 내 게임은 자연스럽게 이미지, 소리 및 글꼴을 사용합니다. 패키지의 배포판을 만들고 싶었습니다. 사용자가 구성 할 수있는 곳은 & &입니다. 이 간단한 게임이 배포 할만한 가치가있는 것은 아니지만 autoconf 및 automake가 작동하는 방식을 배우고 싶습니다. 인터넷에서 예제를 검색했지만 찾은 자습서에서는 간단한 helloworld 프로그램 만 설치하는 방법을 보여줍니다. 그들은 데이터 파일의 설치에 대해서도 말하지 않으며 특정 라이브러리가 있는지 여부를 확인하여 컴파일 타임에 링크 할 수있는 방법도 없습니다. 또한, 내 프로그램은 각 파일을로드 할 수 있도록 각 파일의 설치 위치를 알아야합니다. 필자는 automake 및 autoconf 매뉴얼을 살펴 보았지만 새로운 사용자를위한 리소스가 아닌 참조 자료와 비슷합니다. 누구든지이 개념을 간략하게 설명하거나 나를 읽을 수있는 곳으로 안내 할 수 있습니까?GNU의 autoconf 및 automake로 데이터 파일을 패키지하는 방법
6
A
답변
13
나는 이것에 대한 연구를 해왔고, 나에게 효과가 있었던 것을 나누고 싶었다. 다음과 같은 디렉토리 구조를 만들었습니다.
/
|->src/
| |-> Makefile.am
| |-> main.cpp
| |-> functions.cpp
|
|-> data/
| |-> Makefile.am
| |-> somethings.png
| |-> something.mp3
|-> configure.ac
|-> README
|-> NEWS, AUTHORS etc. etc.
데이터 폴더에 이미지, 글꼴, 사운드 등을 모두 넣었습니다. 데이터 폴더의 Makefile.am은 다음과 같습니다.
pkgdata_DATA = esound.wav \
another.wav \
apicture.png
데이터 디렉토리에 있어야 할 모든 파일을 나열합니다. src 폴더에있는 Makefile.am은 다음과 같이 : 여기
bin_PROGRAMS = mygame
mygame_SOURCES = main.cpp functions.cpp
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\"
중요한 부분은 구성 스크립트에 전달 된 옵션에 따라, DATADIR 매크로를 정의 AM_CPPFLAGS이다. 그래서 우리는 다음과 같이 우리의 소스 파일에서이 매크로를 사용할 수 있습니다
background = load_image(DATADIR "/background.png");
당신의 프로그램이 배경 파일은 파일 시스템에 상주해야하는 위치 알고 컴파일받을 수 있도록.
+0
배포하려면 dist_pkgdata_DATA를 사용해야합니까? –
나는 autoconf/automake를 사용하는 가장 좋은 방법은 자신의 것과 비슷한 프로젝트를 찾고, 그들이하는 일을보고, 문서와 함께 작업하는 것임을 알았다. –
John Calcote의 저서 "Autotools : GNU Autoconf, Automake 및 Libtool에 대한 Practers 's Guide"를 참조하십시오. –
더 읽기 쉽게 소개하는 [Goat Book] (http://sourceware.org/autobook/)을 사용해보십시오. autotools. AutoTools로 가장 일반적인 작업을 수행하는 방법을 보여주는 다양한 복잡성의 몇 가지 예제 프로젝트가 있습니다. – ldav1s