Использование make для моей программы - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть куча файлов в разных папках:

/ai/client.cpp   # contains the main function

/ai/utils/geometry.h   
/ai/utils/geometry.cpp

/ai/world/world.h
/ai/world/world.cpp
/ai/world/ball.h
/ai/world/ball.cpp
/ai/world/bat.h
/ai/world/bat.cpp

Как мне написать make-файл для компиляции этой программы? Я использую Ubuntu.

Ответы [ 4 ]

2 голосов
/ 25 февраля 2010

Make - это универсальный инструмент, и в нем много разных тонкостей. Тем не менее, вы можете сделать все просто:

OBJ := ai/utils/geometry.o ai/world/world.o ai/world/ball.o ai/world/bat.o

all: ai/client
.PHONY: all  # specific to GNU make, which is what Ubuntu provides

ai/client: ai/client.o $OBJ

# this rule means each .cpp file depends on its corresponding header
# and, since the .o files depend on .cpp files (a builtin make rule),
# they will be recompiled if the headers change
#
# you can also get more complex and generate dependencies automatically
# look at the -MM option for gcc, for example
%.cpp: %.h
0 голосов
/ 26 февраля 2010

работает, спасибо вам Every1 за ваши ценные комментарии специально для ссылок в предыдущем посте я забыл написать файл client.cpp в строке 6 но моя ошибка заключалась в том, что я включил один заголовок с ошибкой в ​​client.cpp, и он никогда не смог его найти.

0 голосов
/ 25 февраля 2010

Первый результат в Google: http://www.opussoftware.com/tutorial/TutMakefile.htm

Кажется, это очень хороший учебник. Должно быть довольно простым для понимания, обратите внимание, что они говорят о GNU-версии make, которая используется чаще всего. Также существует версия BSD, если вы используете ОС на базе BSD (например, OpenBSD, NetBSD или FreeBSD ... кто-нибудь знает о Mac OSX?)

0 голосов
/ 25 февраля 2010
  1. вы должны убедиться, что вы установили g ++ и build-essential
  2. здесь - некоторое представление о консорциуме черной магии makefile
  3. Я думаю, что make 1 работает с каталогом, поэтому ввод mydirectory / myfile.cpp должен работать хорошо
  4. остальное - базовые команды g ++, но учебника по 1 должно быть достаточно:)

1 программа, выполняющая make-файлы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...