Strona 1 z 2
Geany - linker
: 02 paź 2010, 00:17
autor: next_user
Witam
Do c++ używam Genay , ale czy mozna jakos zapisac regułe przy budowaniu aby kompilował wszystkie pliki cc ?
bo jeżeli dam regułę "*.cc" to niestety ale nie działa
i dalego musze kompilować z konsoli
Odp: Geany - linker
: 02 paź 2010, 09:28
autor: borzole
stwórz prosty makefile
Odp: Geany - linker
: 02 paź 2010, 09:38
autor: beluosus
@next_user: da się "*.cc":
viewtopic.php?t=113947#post671033
jednak wspomniany Makefile jest lepszym rozwiązaniem.
Odp: Geany - linker
: 02 paź 2010, 10:58
autor: next_user
nie da sie, ponieważ wywala mi blędy przy kompilacji , dlatego napisalem ze sie nie da:)
a jak ten makefile zrobic ? moze jaksi link? bo patrzylem wczesniej za tym ale nie bardzo wiedzialem gdzie mam to umiescic i jak sie do tego odwołać
Odp: Geany - linker
: 02 paź 2010, 11:58
autor: dawwin
Zasady tworzenia prostego makefile (minuta googlowania):
http://www.programuj.com/artykuly/linux/makefile.php
Do tworzenia projektów dobrze nadają się narzędzia GNU autotools
http://drumlin.republika.pl/auto.html
Ale one na początek nie będą Ci potrzebne
Odp: Geany - linker
: 02 paź 2010, 12:30
autor: next_user
tak, pogooglowalem , jak napisalem odp na forum, ale cos mi nie dziala
wchodze w folder gdzie znajduja sie pliki źrodlowe oraz plik 'makefile'
wywoluje polecenie 'make' ale nic to nei daje
tylko otrzymuje informacje
'make: *** Nie podano obiektów i nie znaleziono makefile. Stop.'
Kod: Zaznacz cały
CXX = g++
CFLAGS = -g -O # tutaj można dodawać inne flagi kompilatora
LIBS = -lm `pkg-config gtkmm-2.4 --cflags --libs` # tutaj można dodawać biblioteki
OBJ =\
main.o \
helloworld.o
all: main
clean:
rm -f *.o test2
.c.o:
$(CXX) -c $(INCLUDES) $(CFLAGS) $<
main: $(OBJ)
$(CXX) $(OBJ) $(LIBS) -o test2
Odp: Geany - linker
: 02 paź 2010, 12:35
autor: dawwin
Jesteś pewien, że wykonujesz polecenie make w tym samym katalogu, w którym jest plik Makefile? Nazwij ten plik z dużej litery i spróbuj
Odp: Geany - linker
: 02 paź 2010, 13:53
autor: next_user
dobra juz widzi, rozwiazalem problem z
'brakujacy sepearator' ale teraz wyskakuje ze nie widzi bibliotek potrzebnych do gtk
Odp: Geany - linker
: 02 paź 2010, 13:55
autor: dawwin
Odp: Geany - linker
: 02 paź 2010, 14:07
autor: next_user
tak mam zainstalowane bo jak kompiluje z konsoli wpisujac kazdy plik cc to normlanie dziala
i jak np mial bym folder 'classes' i chcial do niego wrzucic pliki cc to w makefile musial bym to jakos konretnie zasugerowac ? czy wystarczy przy obj podac sciezke ?
Kod: Zaznacz cały
CXX=g++
CFLAGS=-g -O # tutaj można dodawać inne flagi kompilatora
LIBS= `pkg-config gtkmm-2.4 --cflags --libs` # tutaj można dodawać biblioteki
OBJ=\
main.o \
helloworld.o \
jakisKatalog/nazwaobiektu.o
all: main
clean:
rm -f *.o test2
.cc.o:
$(CXX) -c $(INCLUDES) $(CFLAGS) $<
main: $(OBJ)
$(CXX) $(OBJ) $(LIBS) -o test2
Odp: Geany - linker
: 02 paź 2010, 14:14
autor: dawwin
Przy obj możesz podać ścieżkę i będzie OK.
A co do GTK to pokaż, jaki dokładnie błąd Ci zwraca kompilator
Odp: Geany - linker
: 02 paź 2010, 14:21
autor: next_user
Kod: Zaznacz cały
In file included from main.cc:1:
helloworld.h:4:26: error: gtkmm/button.h: No such file or directory
helloworld.h:5:26: error: gtkmm/window.h: No such file or directory
main.cc:2:24: error: gtkmm/main.h: No such file or directory
In file included from main.cc:1:
to jest fragment
takie bledy mialem jezeli nie includowal mi biblioteki gtk daltego przypuszczam ze tutaj jest ten sam problem

Odp: Geany - linker
: 02 paź 2010, 14:26
autor: dawwin
Kod: Zaznacz cały
.cc.o:
$(CXX) -c $(INCLUDES) $(LIBS) $(CFLAGS) $<
I nie wiem, po co Ci $(INCLUDES), skoro nie jest nigdzie zainicjalizowane
Odp: Geany - linker
: 02 paź 2010, 14:29
autor: next_user
szczerze to na szybko skopiwoalem przyklad i zmienilem tylko nazwe kopilatora z gcc na g++ oraz pliki, bo nie bardzo mialem czas zeby sie w tym zaglebic, i fakt, nigdzie nie jest incjalizowane includes, mimo to po wyrzuceniu tego nie dziala (bo raczej nie powinno to miec i tak znaczenia:) )
Odp: Geany - linker
: 02 paź 2010, 14:34
autor: dawwin
next_user pisze:[...] mimo to po wyrzuceniu tego nie dziala [...]
A zobacz, co dopisałem w poprzednim poście pogrubioną czcionką
Odp: Geany - linker
: 02 paź 2010, 17:43
autor: next_user
no fakt, nie popatrzylem dokladnie, ale mam nstepny problem bo po przeniesieniu pliku do folderu wyskakuje mi komunikat
Kod: Zaznacz cały
g++ `pkg-config gtkmm-2.4 --cflags --libs` -c -g -O main.cc
g++ `pkg-config gtkmm-2.4 --cflags --libs` -c -g -O test/helloworld.cc
g++ main.o test/helloworld.o `pkg-config gtkmm-2.4 --cflags --libs` -o test2
g++: test/helloworld.o: No such file or directory
make: *** [main] Błąd 1
teraz mam taka strukture
Kod: Zaznacz cały
CXX=g++
CFLAGS=-g -O # tutaj można dodawać inne flagi kompilatora
LIBS= `pkg-config gtkmm-2.4 --cflags --libs` # tutaj można dodawać biblioteki
OBJ=\
main.o \
test/helloworld.o
all: main
clean:
rm -f *.o test2
.cc.o:
$(CXX) $(LIBS) -c $(CFLAGS) $<
main: $(OBJ)
$(CXX) $(OBJ) $(LIBS) -o test2
Odp: Geany - linker
: 02 paź 2010, 18:19
autor: dawwin
Kod: Zaznacz cały
CXX=g++
CFLAGS=-g -O # tutaj można dodawać inne flagi kompilatora
LIBS= `pkg-config gtkmm-2.4 --cflags --libs` # tutaj można dodawać biblioteki
OBJ=\
main.o \
test/helloworld.o
all: main
clean:
rm -f *.o test2
.cc.o:
$(CXX) $(LIBS) -c $(CFLAGS) $< -o $@
main: $(OBJ)
$(CXX) $(OBJ) $(LIBS) -o test2
Pogrubiony tekst nakazuje zapisać kompilatorowi plik wynikowy w tym samym katalogu i o tej samej nazwie ale z rozszerzeniem .o
Odp: Geany - linker
: 02 paź 2010, 19:02
autor: next_user
wielkie dzięki
tylko jeszcze jedno

nie czysci mi plikow "*.o"
Odp: Geany - linker
: 02 paź 2010, 19:13
autor: dawwin
Zgaduję, że nie czyści tylko tych z katalogu test. Popraw linijkę dotyczącą czyszczenia na następującą
Odp: Geany - linker
: 02 paź 2010, 19:22
autor: next_user
w ogole nie czyści ;( teraz tez nie czysci