2012-02-11 27 views
6

Tôi là một lập trình viên C++ khá mới. Tôi đã thực hiện một trò chơi rất đơn giản bằng cách sử dụng thư viện SDL. Trò chơi của tôi, một cách tự nhiên, sử dụng một số hình ảnh, âm thanh và phông chữ. Tôi đã muốn phân phối gói, nơi người dùng có thể định cấu hình & &. Nó không giống như trò chơi đơn giản này là giá trị phân phối, nhưng tôi muốn tìm hiểu cách autoconf và automake hoạt động. Tôi đã tìm kiếm các ví dụ trên internet nhưng các hướng dẫn tôi có thể tìm thấy chỉ hiển thị việc cài đặt một chương trình helloworld đơn giản. Họ không nói về cài đặt các tập tin dữ liệu, cũng không phải làm thế nào để kiểm tra xem một số thư viện tồn tại để tôi có thể liên kết với chúng trong thời gian biên dịch. Và cũng có thể, chương trình của tôi nên biết nơi mỗi tập tin được cài đặt để nó có thể tải chúng. Tôi đã nghiên cứu kỹ các tài liệu tự động hóa và autoconf, nhưng chúng giống như một tài liệu tham khảo hơn là một tài nguyên cho những người mới. Bất cứ ai có thể giải thích ngắn gọn về khái niệm này, hoặc dẫn tôi đến một nơi nào đó mà tôi có thể đọc về chúng.Làm thế nào để đóng gói các tệp dữ liệu bằng tự động cấu hình và tự động của GNU

+0

Tôi đã tìm ra cách tốt nhất để đi với autoconf/automake là tìm một dự án tương tự như dự án của bạn, xem họ làm gì và làm việc từ đó với tài liệu. –

+0

Bạn có thể muốn xem cuốn sách của John Calcote "Autotools: Hướng dẫn của Practioner về GNU Autoconf, Automake, và Libtool" –

+0

Hãy thử [Goat Book] (http://sourceware.org/autobook/) để có một giới thiệu dễ đọc hơn autotools. Họ có một vài dự án ví dụ về sự phức tạp khác nhau cho thấy cách thực hiện những điều phổ biến nhất với autotools. – ldav1s

Trả lời

13

Tôi đã thực hiện một số nghiên cứu về điều này và tôi muốn chia sẻ những gì đã làm việc cho tôi. Tôi đã tạo cấu trúc thư mục như sau:

/ 
|->src/ 
| |-> Makefile.am 
| |-> main.cpp 
| |-> functions.cpp 
| 
|-> data/ 
| |-> Makefile.am 
| |-> somethings.png 
| |-> something.mp3 
|-> configure.ac 
|-> README 
|-> NEWS, AUTHORS etc. etc. 

Tôi đã đặt tất cả hình ảnh, phông chữ, âm thanh, v.v ... vào thư mục dữ liệu. Makefile.am trên thư mục dữ liệu trông giống như sau:

pkgdata_DATA = esound.wav \ 
       another.wav \ 
       apicture.png 

Nó chỉ liệt kê tất cả các tệp cần kết thúc trong thư mục dữ liệu. Các Makefile.am trong thư mục src trông như thế này:

bin_PROGRAMS = mygame 
mygame_SOURCES = main.cpp functions.cpp 
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\" 

Phần quan trọng ở đây là AM_CPPFLAGS, trong đó xác định datadir vĩ mô, theo các tùy chọn truyền cho script configure. Vì vậy, sau đó chúng ta có thể sử dụng macro này trong các tập tin nguồn của chúng tôi như thế này:

background = load_image(DATADIR "/background.png"); 

Vì vậy mà chương trình của bạn sẽ được biên soạn biết nơi nào màu nền nên nằm trong hệ thống tập tin.

+0

Bạn có nên sử dụng dist_pkgdata_DATA nếu bạn muốn phân phối không? –

Các vấn đề liên quan