Makefile с использованием библиотеки - PullRequest
1 голос
/ 06 марта 2012

Я сделал проект в XCode, который реализует алгоритм всего в 1 файле C ++.Для компиляции нужна библиотека, которая находится в каталоге с именем libgambit в другом каталоге.Структура каталогов выглядит следующим образом:

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

Итак, мне нужен make-файл, который сначала собирает все, что находится в libgambit, и использует объектные файлы, полученные в результате этого, для сборки и связывания converttion.cc.Затем исполняемый файл должен находиться в той же папке, что и make-файл.

Кажется, это довольно простой вопрос, но я мучаюсь по нему 2 дня.

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Существует более одного способа сделать это.Вот грубый, но эффективный способ:

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 не заметит, что некоторые объекты должны быть перестроены), но это достаточно хорошотеперь.Дайте нам знать, если вы хотите попробовать расширенную обработку зависимостей.

0 голосов
/ 06 марта 2012

Вы можете использовать Makefile, разработанный здесь .Он позволяет добавлять новые файлы и каталоги в сборку без изменения файла Makefile.

...