Jeremy Knees
Jeremy Knees

Reputation: 662

Makefile using a library

I have made a project in Xcode who implements an algorithm in just 1 c++ file. To compile it needs an library who is in a directory called libgambit in an other directory. The directory structure looks like this:

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

So what I need is a makefile who first builds everything whats in libgambit and uses the object files who result from that to build and link convertion.cc. The executable should then be in the same folder as the makefile.

It seems a pretty easy question but I'm suffering on it for 2 days now.

Upvotes: 1

Views: 206

Answers (2)

Beta
Beta

Reputation: 99154

There's more than one way to do it. Here is a crude but effective way:

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 $@

This does not track dependencies very well (if you alter a header file, Make won't notice that some objects must be rebuilt), but it is good enough for now. Let us know if you want to try advanced dependency handling.

Upvotes: 1

BЈовић
BЈовић

Reputation: 64273

You can use the Makefile developed here. It allows you to add new files and directories to the build without changing the Makefile.

Upvotes: 0

Related Questions