Я начал работать с моим первым make-файлом. Я пишу roguelike на C ++ с использованием библиотеки libtcod, и у меня есть следующая программа hello world для проверки работоспособности моей среды:
#include "libtcod.hpp"
int main()
{
TCODConsole::initRoot(80, 50, "PartyHack");
TCODConsole::root->printCenter(40, 25, TCOD_BKGND_NONE, "Hello World");
TCODConsole::flush();
TCODConsole::waitForKeypress(true);
}
Структура каталогов моего проекта выглядит следующим образом:
/CppPartyHack
----/libtcod-1.5.1 # this is the libtcod root folder
--------/include
------------libtcod.hpp
----/PartyHack
--------makefile
--------partyhack.cpp # the above code
(пока мы здесь, как мне сделать правильный отступ? Использовать эти черточки глупо.)
и вот мой make-файл:
<code>
SRCDIR = .
INCDIR = ../libtcod-1.5.1/include
CFLAGS = $(FLAGS) -I$(INCDIR) -I$(SRCDIR) -Wall
CC = gcc
CPP = g++
.SUFFIXES: .o .h .c .hpp .cpp</p>
<p>$(TEMP)/%.o : $(SRCDIR)/%.cpp
$(CPP) $(CFLAGS) -o $@ -c $<
$(TEMP)/%.o : $(SRCDIR)/%.c
$(CC) $(CFLAGS) -o $@ -c $< </p>
<p>CPP_OBJS = $(TEMP)partyhack.o</p>
<p>all : partyhack</p>
<p>partyhack : $(CPP_OBJS)
$(CPP) $(CPP_OBJS) -o $@ -L../libtcod-1.5.1 -ltcod -ltcod++ -Wl,-rpath,.</p>
<p>clean :
\rm -f $(CPP_OBJS) partyhack
Я использую Ubuntu, и мой терминал выдает мне следующие ошибки:
max @ max-desktop: ~ / Рабочий стол / Разработка / CppPartyhack / PartyHack $ make
g ++ -c -o partyhack.o partyhack.cpp
partyhack.cpp: 1: 23: ошибка: libtcod.hpp: такого файла или каталога нет
partyhack.cpp: в функции int main ():
partyhack.cpp: 5: ошибка: TCODConsole не объявлена
partyhack.cpp: 6: ошибка: TCODConsole не объявлена
partyhack.cpp: 6: ошибка: «TCOD_BKGND_NONE» не был объявлен в этой области
partyhack.cpp: 7: ошибка: TCODConsole не объявлена
partyhack.cpp: 8: ошибка: TCODConsole не объявлена
make: *** [partyhack.o] Ошибка 1
Очевидно, что make-файл не может найти libtcod.hpp. Я дважды проверил и уверен, что относительный путь к libtcod.hpp в INCDIR правильный, но поскольку я только начинаю с make-файлами, я не уверен, что еще может быть не так. Мой make-файл основан на шаблоне, который разработчики libtcod предоставили вместе с самой библиотекой, и хотя я посмотрел несколько онлайновых руководств по make-файлам, код в этом make-файле немного сложнее, чем любой из примеров, приведенных в руководствах , поэтому я предполагаю, что я испортил что-то основное в преобразовании. Спасибо за любую помощь.