Borland C++ Compiler/MAKE: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 275:
===Specjalne zmienne===
Istnieją jeszcze zmienne specjalne, które są już stworzone przez MAKE i możesz je używać w komendach tuż po zasadach. Są one bardzo wygodne:
{|class=wikitable
{|
|!zmienna
|! przekazywane dane w zasadach ogólnych
|! przekazywane dane w zasadach szczegółowych
|-
| $*
Linia 324:
 
Oto typy znaczników do standardowych makr MAKE'a:
{|class=wikitable
{|
|!znacznik
|! przekazywane dane o pliku
|! przykład użycia
|! przykładowy rezultat
|-
| D
Linia 362:
ILINK32 $(L_FLAGS) c0w32.obj $**,$.,,cw32.lib import32.lib $(LIB),$(DEF),$(RES)
 
Używając makr <tt>$**</tt> lub <tt>$?</tt> w zasadzie szczegółowej (''explicit rule'') można do komendy dodać przedrostek '''&''', który będzie oznaczał, że komenda odnosi się tylko do jednego pliku z pola <tt><src></tt> (normalnie makra <tt>$**</tt> i <tt>$?</tt> w zasadach szczegółowych oznaczają wszystkie pliki źródłowe, co uniemożliwi pracę niektórych komend) np.:
 
hello.exe: hello.obj klasa.obj
Linia 428:
 
Jak widać makefile bardzo zyskał na funkcjonalności i co najważniejsze na uniwersalności: dzięki zmiennym cały czas możesz zmieniać skład plików projektu zasadniczo nie ingerując w zasady. Nawet jeśli w projekcie nie przewidujesz zasobów to nie będzie tragedii: operacja kompilacji zasobów nie będzie miała miejsca a plik nie zostanie dodany przez konsolidator. Poza tym zmienna <tt>DIR</tt> nie została stworzone bez powodu. Dzieki niej możliwa jest także budowa nowego, całkowicie innego projektu, którego wynikiem będzie <tt>$(BIN)</tt>, plikami źródłowymi <tt>$(SRC)</tt> itd. Oczywiście przy tej operacji trzeba zachować tę samą strukturę podkatalogów projektu i rozmieszczenia w nich typów plików.<br>
Teraz małe sprostowanie tak dziwnego zapisu kompilacji zasobów: <tt>brcc32</tt>BRCC32 nie zachowuje się jak większość programów z FCLT ponieważ zostawia plik wynikowy w lokalizacji ze źródłami.<br>
Jest pewien mankament tego makefile'a: jeśli nie masz plików zależnych zasady szczegółowej MAKE się o nie upomni, choć mają one dopiero powstać w trakcie trwania makefile'a. Jest na to rada: przed pierwszym (później nie ma już takiej potrzeby) uruchomieniem makefile'a "dotknij" programem TOUCH wszystkie pliki źródłowe. Np. w tym projekcie będzie to wyglądać tak:
 
Linia 439:
 
Można rozwiązać to w ten sposób... ale jest znacznie bardziej funkcjonalna dyrektywa...
 
==Dyrektywy==
Dyrektyw/słów kluczowych w borlandowskim makefile'u jest mniej niż np. w C++ ale wystarczająco dużo, aby efektywnie zarządzać projektem. W tym przypadku spisałem niemal wszystkie wyrażenia (chyba że sam któregoś nie rozumiałem). Nie musisz się ich uczyć na pamięć, wystarczy, że będziesz miał te 5 tabelek zawsze pod ręką. Warto jednak na początek je przeczytać, żeby przekonać się jakie są możliwości słów kluczowych w MAKE.