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.

Powrót