ΕΕΛ/ΛΑΚ - Λίστες Ταχυδρομείου

Re: Gcc 4.6 (Ubuntu)

Στις 3 Οκτωβρίου 2011 3:45 μ.μ., ο χρήστης John Tsiombikas
<nuclear [ at ] member [ dot ] fsf [ dot ] org> έγραψε:
> On Mon, Oct 03, 2011 at 02:48:09PM +0300, Nick Kossifidis wrote:
>>
>> Ναι αυτό είναι το σωστό γενικά και αυτό θα δεις στα Makefiles, απλά
>> βαριέμαι και τα έβαλα όλα μαζί πακέτο σε ένα bash script να
>> ξεμπερδεύω. Θα ασχοληθώ με automake/autoconf αφού ξεμπερδέψω με τα
>> υπόλοιπα.
>
> Den xreiazesai to daidalodes kataskevasma pou legetai autoconf/automake.
> Gia to 99% ton periptoseon mporeis na grapseis ena aplo makefile tis
> morfis (assuming GNU make):
>
> src = $(wildcard: src/*.c)
> obj = $(src:.c=.o)
> bin = mybinary
>
> CFLAGS = -pedantic -Wall -g `pkg-config --cflags whatever`
> LDFLAGS = `pkg-config --libs whatever`
>
> $(bin): $(obj)
>    $(CC) -o $@ $(obj) $(LDFLAGS)
>
> .PHONY: clean
> clean:
>    rm -f $(obj) $(bin)
>
> That's it. Ena elafros kalytero me ligo perisotero dependency tracking
> tha prosethete kai:
> deps = $(obj:.o=.d)
>
> # kato apo to binary rule
> -include $(deps)
>
> %.d: %.o
>    $(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@
>
> Perfect.
>

Συμφωνώ απόλυτα γι' αυτό και μέχρι στιγμής δεν το χρησιμοποιώ, θα το
χρειαστώ όμως αργότερα γιατί θέλω περισσότερα checks κλπ που με το ac
είναι ποιο εύκολο να τα στήσεις.

>> Ναι δίκιο, το linking stage έρχεται μετά απλά (και το έχω δει και σε
>> Makefiles αυτό) τα flags τα βάζουν γενικώς παντού, πες από συνήθεια :P
>
> To na bazoun to CFLAGS pantou einai lathos alla de dimiourgei kanena
> idietero provlima, esy bazeis ousiastika to LDFLAGS pantou, kati akros
> provlimatiko.
>

Απ' το documentation του gcc όσον αφορά τα LDFLAGS...
"They are meaningless if the compiler is not doing a link step. "
Άλλο meaningless, άλλο λάθος, απλά ο compiler τα αγνοεί και όσο για τα
CFLAGS μπαίνουν παντού συνήθως, εκτός αν τη μια θες να κάνεις τα
optimizations κλπ και την άλλη όχι π.χ., το ίδιο το automake όταν
κάνει generate τα βάζει κάθε φορά που καλεί τον compiler, από ένα
τυχαίο Makefile...

COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
$(AM_CFLAGS) $(CFLAGS)


-- 
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

απαντήσεις

αναφορές

πλοήγηση μηνυμάτων