Eli jos map.cc tiedostossa on karttaa koskeava luokka niin miten voin käyttää sitä main.cc vaikka ne laitetaan yhteen makella.
Minun makefile:
rope:map.o object.o main.o g++ -o rope map.o object.o main.o
PS:Yllätys, yläätys, make toimii nuinkin :O ei tarvi erikseen määritellä miten nuo o tiedostot käännetään.
Tuota varten jokaiselle kooditiedostolle on yleensä otsikkotiedosto:
/**********
** map.h **
**********/
class TKartta
{
public:
TKartta();
~TKartta();
};/***********
** map.cc **
***********/
#include "map.h"
// Funktiot:
TKartta::TKartta()
{
}
TKartta::~TKartta()
{
}/************ ** main.cc ** ************/ #include "map.h"
Itse olen yleensä käyttänyt tälläistä Makefilea.
CC = g++ LD = g++ #C++-compiler options CFLAGS = -Wall -g -O2 # libraries LDLIBS = -lm # Object files for target OBJS = main.o map.o object.o # target program TARGET = rope all: $(TARGET) clean: rm -f $(OBJS) *~ core.* $(TARGET) %.o: %.cc $(CC) $(CFLAGS) -c -o $@ $< $(TARGET): $(OBJS) $(LD) -o $@ $(OBJS) $(LDLIBS) .PHONY: all clean
Oli pakko tuoda esiin, koska tämä ei toimi vieläkään. Muutin .h tiedostoksi ja sinne sisälle luokan esittelyn + joitain headereita ja vakioita, koska muuten niitä ei voi käyttää.
EDIT: ainiin. Unohtui mainita mitä se valittaa:
g++ -c -o main.o main.cc g++ main.o -o rope main.o(.text+0x126): In function `main': : undefined reference to `map::map()' main.o(.text+0x167): In function `main': : undefined reference to `Door::Door()' collect2: ld returned 1 exit status make: *** [rope] Error 1
ja vielä makefile:
rope:main.o g++ main.o -o rope
Mulla unohtui laittaa .cc tiedostoon .h tiedoston liittäminen(include)
EDIT2: Nytten ei tarvi olla .h tiedostoissa kuin luokka.
Aihe on jo aika vanha, joten et voi enää vastata siihen.