2012-03-06 61 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