2012-03-06 47 views
1

我在Xcode中製作了一個項目,它在1個C++文件中實現了一個算法。編譯它需要一個庫,該庫位於另一個目錄中名爲libgambit的目錄中。目錄結構是這樣的:使用庫的Makefile文件

lib/ 
    libgambit/libgambit.cc 
      libgambit.h 
      game.cc 
      game.h 
      ... 
src/Game\ Theoretic\ Analysis/convertion.cc 
           convertion.h 
           Makefile 

所以我需要的是一個makefile誰第一個建立的一切什麼在libgambit,並使用從誰導致建立和鏈接convertion.cc的目標文件。該可執行文件應該與makefile位於同一個文件夾中。

這似乎是一個很容易的問題,但我現在已經忍受了2天。

+0

你到目前爲止有什麼? – Geoffroy 2012-03-06 11:40:35

回答

0

您可以使用開發的Makefile here。它允許您在不更改Makefile的情況下將新文件和目錄添加到版本。

1

有多種方法可以做到這一點。這裏是一個原始而有效的方法:

LIBSRCS := $(wildcard $(PATHTOLIB)/lib/libgambit/*.cc) 
LIBOBJS := $(LIBSRCS:.cc=.o) 

convertion: convertion.o $(LIBOBJS) 
    @g++ -Wall $^ -o [email protected] 

%.o: %.cc 
    @g++ -Wall -Ilib/libgambit -c $< -o [email protected] 

這並不跟蹤相關性非常好(如果你改變一個頭文件,使不會注意到一些對象必須重建),但它是不夠好,現在。讓我們知道您是否想嘗試高級依賴關係處理。

+0

我還不在那裏。有沒有可以生成自動生成文件的工具? – 2012-03-08 08:40:47

+0

@Jeroen:是的,'automake',但我不建議朝那個方向走。如果你告訴我們更多,我們可能會得到一個基本的makefile。當你嘗試這個時會發生什麼? – Beta 2012-03-08 13:05:59