MDL - MicroStation Development Language - Brzytwa w twoich rękach
Poniżej zostały przedstawione tytuły poszczególnych lekcji kursu programowania w MDL-u publikowanie w kolenych Biuletynach TMC wraz z niezbędnymi uzupełnieniami.
Pełny tekst tychże lekcji został opublikowany na stronie Krzyśka Biniasia Kurs MDL
Lekcja nr 1
Jak skompilować przykładową
aplikację mdl,
Opis działania bmakewin.
Lekcja nr 2
Struktura programu w MDL,
Programowanie zorientowane zdarzeniowo,
Omówienie struktury programu lstring.ma Poniżej kod omawianej aplikacji:
linestring.zip
Lekcja nr 3
Obsługa ruchu wskaźnika myszy
ekranie,
Elementy proste i złożone - deskryptory.
----------------------
A tu znajdziesz małe FAQ MDLa
Do czego sluzy plik makefile i jak z
niego korzystac (tzn. prosze o podanie przykladu). Czy podaje sie
go jako opcje w linii kompilatora i linkera ??
Nalogolniej rzecz ujmujac, Makefile to swego rodzaju skrypt. Mowi
co zrobic, jezeli data pliku lub plikow ktore sa "zaleznoscia"
(dependency) jest wczesniejsza niz data pliku, ktory jest "celem"
(target). Sluzy glownie do sterowania procesem kompilacji.
Przykladowo: mamy plik "test.c", ktory uzywa pliku
"test.h". Chcemy otrzymac ze niego test.obj i test.exe
Czyli: - plik test.exe ma byc zrobiony, jezeli zmieni sie test.obj.
- plik test.obj ma byc zrobiony, jezeli zmieni sie test.c lub
test.h Co znaczy "zrobiony", definiujemy w Makefile'u -
dla plikow .exe bedzie to linkowanie, dla plikow .obj -
kompilacja. Makefile dla tego przykladu, wygladalby tak:
MAKEFILE:
=================================
all : test.exe
test.exe : test.obj
link test.obj /OUT:test.exe
test.obj : test.c test.h
cl /c test.c /Fotest.obj
=================================
MAKEFILE: EOF
Jest to makefile dla srodowiska MS w Win32. W innych systemach
zasada dzialania jest taka sama - sa pewne roznice skladniowe.
"all" to specjalny target, ktory defniuje "wszystko
co ma byc zrobione". "Wszystko" w naszym przypadku
oznacza "test.exe".
Nastepne linie mowia, ze test.exe zalezy od test.obj, i ze zeby
go zrobic, trzeba zawolac program:
"link test.obj /OUT:test.exe".
Z kolei, "test.obj" zalezy od plikow test.c i test.h.
Zeby otrzymac "test.obj", trzeba zawolac program:
"cl /c test.c /Fotest.obj"
czyli skompilowac "test.c"
Aby tego uzyc, wystarczy zawolac program "nmake" (MS) -
on to wszystko zinterpretuje. Oczywiscie przyklad ten jest
banalny. Make ma duzo wieksze mozliwosci, chociazby
definiowanie zmiennych. W lepszym wydaniu, powyzszy makefile
moglby wygladac tak.
# nazwa programu
PROGNAME = test
# opcje kompilatora
CFLAGS = /c
# opcje linkera
LFLAGS = /INCREMENTAL:no
all : $(PROGNAME).exe
$(PROGNAME).exe : $(PROGNAME).obj
link $(LFLAGS) $(PROGNAME).obj /OUT:$(PROGNAME).exe
$(PROGNAME).obj : $(PROGNAME).c $(PROGNAME).h
cl $(CFLAGS) $(PROGNAME).c /Fo$(PROGNAME).obj
Nalezaloby jeszcze zdefiniowac osobne flagi kompilatora i linkera
dla wersji debug i release - i bylby to juz makefile z
prawdziwego zdarzenia.