Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

różnice w plikach makefile dla winAVR

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:
różnice w plikach makefile dla winAVR

Postautor: Sławek5 » 26 lip 2006, o 06:31

CZeść.

Próbuję kompilować w WinAVR (zwykle robiłem to w ICC) wg kursu EdW ale jest tam opis pliku makefile dla wersji kompilatora z nr 20050214. Sciągnąłem wersję nr 20060421 i zainstlowałem, ale stwierdziłem że są pewne zmiany w stosunku do poprzedniej wersji zwłaszcza jeśli chodzi o plik makefile. Są tam dodane pewne fragmenty, których nie ma w poprzednim i szczerze mówiąc teraz nie wiem so wpisać.
NIe zabardzo rozumiem pole TARGET oraz SRC, CPPSRC. CZy jeżeli plik jest np. main.c to pole CPPSRC zostaje niewypełnione.
W kursie jest użyte SRC = $(TARGET).c, a je w tej nowzej wersji mam puste pole.
Czy mogę prosić o przybliżenie jak to powypełniać.
Czy jest jakiś konflikt nazw, tzn. czy katalog z projektem może się nazywać jak plik z kodem i tym podobne.

lucck
-
-
Posty:19
Rejestracja:8 maja 2004, o 19:07
Lokalizacja:Warszawa
Kontaktowanie:

Postautor: lucck » 26 lip 2006, o 10:53

Skrypty make to temat rzeka a wiec w wielkim skrocie w przypadku przykladu makefile z avrgcc bedzie tak:

TARGET - nazwa pliku wynikowego (hex lub bin jaki powstaje) na przyklad wpiszesz TARGET=ala_ma_kota wowczas jako plik wynikowy powstanie: ala_ma_kota.hex

SRC - tutaj wpisujesz liste plików źródłowych (C) projektu na przyklad jezeli twoj projekt bedzie sie skladal z trzech plikow wowczas wpisujesz ala.c ola.c jola.c wpisujesz
SRC = ala.c \
ola.c \
jola.c

CPPSRC - lista plików źródłowych (C++) jeżeli to jest projekt C to nic nie wpisujesz - zostawiasz puste.

Pozdr.
L.B.

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Postautor: Sławek5 » 26 lip 2006, o 12:02

A jak rozóżnić pomiędzy CPPSRC a samo SRC? i czy RARGET ma coś wspólnego z plikiem z główną funkcją main

lucck
-
-
Posty:19
Rejestracja:8 maja 2004, o 19:07
Lokalizacja:Warszawa
Kontaktowanie:

Postautor: lucck » 26 lip 2006, o 12:35

W zamysle autora pliku makefile CPPSRC są to pliki źródlowe napisane w języku C++ (Nie C) ktore pod systemami M$Win najczesciej zapisujemy z rozszerzeniem *.cpp natomiast pliki SRC są plikami napisanymi w czystym C. W skrocie rozdzielenie plikow C++ i C umozliwia w mieszanych projektach C z C++ wywolanie odpowiedniego kompilatora GCC z innymi opcjami kompilacji dla jezyka C++ (avr-c++) oraz innymi dla programow jezyka c (avr-gcc). Jak to jest projekt w tylko projekt napisany w C a dla AVRow tak bedzie raczej w 95% przypadkow poniewaz dla avrow biblioteka stdlibc++ i tak nie jest zrobiona, to nie ma zadnego problemu pole CPPSRC pozostwawiamy puste zostanie wywolany kompilator C. Jezeli chodzi o opcje TARGET to nie ma ona nic wspolnego z nazwą pliku gdzie znajduje sie funkcja main. Mozemy wpisac tam sobie dowolna nazwe jaka chcemy zeby mial plik wynikowy hex. Generalnie funkcja main moze byc w dowolnym pliku źródlowym, ważne tylko zeby byla gdzieś w projekcie..

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Postautor: Sławek5 » 27 lip 2006, o 09:11

A czy podając nazwę plików źródłowych musze podawać rozszerzenie, bo zwróciłem uwagę, że raz sie pisze a raz nie ia sam nie wiem.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 27 lip 2006, o 18:58

W zasadzie w pierwszym poscie (Twoim) jest pewna forma, uporzadkowanie, sytuacji.
W SRC masz podane (jak twierdzisz w kursie tak podaja): $(TARGET).c co oznacza ni mniej ni wiecej, tylko jako jeden z plikow zrodlowych wez nazwe z pola target i rozwin ja o rozszerzenie .c

W tym podejsciu mozesz potraktowac pole TARGET jako swego rodzaju nazwe projektu. Skad bedzie brana nazwa (bez rozszerzenia) glownego pliku zrodlowego (uzupelniana tym rozszerzeniem), oraz wykozystana bedzie rowniez jako nazwa wynikowa (tez uzupelniona - lub nie - rozszerzeniem). Jednak pamietaj zawsze, ze jest to tylko takie uproszczenie rozumowania.

Odnosnie zas ostatniego pytania, o ile Twoj plik zrodlowy posiada rozszerzenie (a wypadalo by zeby mial, by zachowac porzadek), to tak... w SRC podajesz rozszerzenia. Nie podaje sie rozszerzenia tam, gdzie plik rozszerzenia nie ma (choc sytuacja taka w przypadku zrodel nie powinna miec miejsca). Jest tez mozliwosc, ze tam gdzie sie "nie podaje", jest to pozniej uzupelniane "automatycznie", tak jak wyjasnilem to na poczatku.

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości