2012-02-11 60 views
6

我是一個相當新的C++程序員。我用SDL庫做了一個非常簡單的遊戲。自然,我的遊戲使用了一些圖像,聲音和字體。我想做一個包的分配,在那裏用戶可以配置& & make。這不像是這個簡單的遊戲值得分發,但我想了解autoconf和automake是如何工作的。我搜索了互聯網上的例子,但是我可以找到的教程只顯示了一個簡單的helloworld程序的安裝。他們既不談論數據文件的安裝,也不知道如何檢查某些庫是否存在,以便我可以在編譯時連接它們。而且,我的程序應該知道每個文件的安裝位置,以便它可以加載它們。我研究過automake和autoconf手冊,但它們更像是一個參考資料,而不是成爲新來者的資源。任何人都可以簡單地解釋這個概念,或者讓我到一個可以閱讀它們的地方。如何使用GNU的autoconf和automake打包數據文件

+0

我發現使用autoconf/automake最好的方法是找到一個類似於你自己的項目,看看他們做了什麼,然後從那裏用文檔處理。 – 2012-02-11 17:57:43

+0

您可能想看看John Calcote的書「Autotools:GNU Autoconf,Automake和Libtool實踐者指南」 – 2012-02-12 13:05:07

+0

嘗試使用[Goat Book](http://sourceware.org/autobook/)獲取更易讀的介紹自動工具。他們有幾個複雜程度不同的示例項目,展示瞭如何使用自動工具完成最常見的事情。 – ldav1s 2012-02-11 19:03:58

回答

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 

它只是簡單地列出所有需要在數據目錄中結束的文件。該Makefile.am src文件夾中是這樣的:

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

重要這兒的一部分是AM_CPPFLAGS,它定義DATADIR宏,根據傳遞給configure腳本的選項。這樣的話我們可以在源文件中使用這個宏是這樣的:

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

使你的程序會被編譯知道哪裏背景文件應駐留在文件系統中。

+0

如果你想分發它,你應該使用dist_pkgdata_DATA嗎? – 2017-06-23 16:58:17

相關問題