我在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天了。
答案 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的情况下向构建中添加新文件和目录。