Makefile使用库

时间:2012-03-06 11:37:46

标签: c++ makefile gnu

我在Xcode中创建了一个项目,它只在1个c ++文件中实现了一个算法。要编译它需要一个位于另一个目录中名为libgambit的目录中的库。目录结构如下所示:

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天了。

2 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。这是一种粗略但有效的方式:

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

convertion: convertion.o $(LIBOBJS)
    @g++ -Wall $^ -o $@

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

这不会很好地跟踪依赖关系(如果你改变了头文件,Make就不会注意到某些对象必须重建),但现在已经足够了。如果您想尝试高级依赖项处理,请告诉我们。

答案 1 :(得分:0)

您可以使用开发的Makefile here。它允许您在不更改Makefile的情况下向构建中添加新文件和目录。