2013-11-03 72 views
1

我在這裏沒有找到與FMOD和makefile有關的帖子,我嘗試從FMOD論壇獲得一些幫助,但他們的數據庫已關閉。所以,在這裏。將FMOD聲音工具集成到遊戲中

我正在使用Linux Ubuntu 12.04 LTS 32位。我想將FMOD音效功能整合到空氣曲棍球遊戲中。我有運作的遊戲,我有一個運作的「例子」。我並不是很熟悉各種makefile語法,也不熟悉FMOD應用程序,這就是我來到這裏的原因。

這是該示例生成文件:

x86: main.cpp 
     g++ -O2 -m32 -o example $< ../../api/lib/libfmodex.so 

x64: main.cpp 
     g++ -O2 -m64 -o example $< ../../api/lib/libfmodex64.so 

x86_c: main.c 
     g++ -O2 -m32 -o example $< ../../api/lib/libfmodex.so 

x64_c: main.c 
     g++ -O2 -m64 -o example $< ../../api/lib/libfmodex64.so 

clean: 
     rm -f example 

據我瞭解,該示例生成文件才能確定在基於您所使用的體系結構和語言加載。我不知道示例makefile中的哪些標記我應該放在空氣曲棍球makefile的標記列表中。我害怕搞砸了。

此外,我想確保遊戲可以在任何機器上運行,而無需參考機器上可能不存在的/usr/local/include/usr/local/lib

新手在這裏。很感謝任何形式的幫助。

回答

1

根據您告訴它的目標,該makefile將生成一個示例二進制文件,用於兩個源文件之一的兩個體系結構之一。選項包括:

`x86` which builds a 32 bit program from the example C++ source file. 
`x64` which builds a 64 bit program from the example C++ source file. 
`x86_c` which builds a 32 bit program from the example C source file. 
`x64_c` which builds a 64 bit program from the example C source file. 

代碼的主要部分,就構建遊戲FMOD去,是它包括在編譯行適當的FMOD共享對象文件(儘管在某種程度上我不通常看到完成)。

您需要在遊戲的編譯命令中包含類似的路徑,或者(如果您使用的是已安裝在系統中的FMOD庫),則只需將正確的-L-l標誌包含到GCC /克++)。 -L告訴編譯器在哪裏搜索FMOD庫,並告訴它哪個庫名稱(-lfmodex-lfmodex64這些示例)。

+0

我實際上已經將'-lfmod-4.44'添加到庫列表中,將'-I/usr/local/include -L/usr/local/lib'添加到編譯器標誌列表中,但那不起作用。至於'-lfmodex'或'-lfmodex64',我不知道要使用哪一個,但可能兩者都可以工作。另外,我已經在我的文章中添加了一些關於指向位於其他地方的FMOD頭文件和cpp文件的內容。 – Andrei

+0

你現在的連接線是什麼樣的?它失敗了嗎?如果是這樣,怎麼樣?在構建時鏈接期間找到庫的路徑對運行時庫位置無關緊要。在運行時,系統配置的位置將被搜索適當的庫;如果他們發現事情會正常工作。 (二進制/庫可以包含額外位置的明確列表以檢查庫,但是這是一個不同的主題,請閱讀有關RPATH的內容。) –

+0

鏈接行是:'$(CC)$(CXXFLAGS)../src/main。 cpp ../src/mesh.cpp ../src/texture.cpp -o ../bin/Matrix $(LIBS)',這很好。它在以前的修訂版本上工作。另外,你是否建議RPATH是我應該用來允許應用程序在其目錄中找到這些庫的東西? – Andrei