BMK erweiterung, aufruf von Scripten vor dem kompilieren.

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

BtbN

Betreff: BMK erweiterung, aufruf von Scripten vor dem kompilieren.

BeitragSo, Feb 25, 2007 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich aktuell mit QT am rumhantieren bin, und dieses so tools wir den moc oder den uic hat, brauchte ich eine erweiterung für das bmk, welche vor dem kompilieren einer datei scripte aufruft, welche wiederrum die utils aufruft.

Die änderungen sind wie folgt:

Code: [AUSKLAPPEN]
Function RunSystemScript(file$)
   Local strm:TStream = ReadFile(file)
   If Not strm Then WriteStdout(StripDir(file)+" not found.~n");Return
   WriteStdout("Running "+StripDir(file)+" in standard shell.~n")
   system_(strm.ReadString(FileSize(file)))
   strm.Close()
EndFunction

Function RunPreScripts(src_file$)
   Local file$=src_file+".cmd"
   RunSystemScript(file)
?Win32
   file$=src_file+".win32.cmd"
?MacOS
   file$=src_file+".macos.cmd"
?Linux
   file$=src_file+".linux.cmd"
?
   RunSystemScript(file)
EndFunction


Diese neuen funktionen gehören in bmk_util.bmx. Ich hab sie über die funktion CompileC gepackt.

Dann muss in den funktionen CompileC und CompileBMX jeweils eine Zeile hinzugefügt werden:

Code: [AUSKLAPPEN]
RunPreScripts(src)


In CompileBMX habe ich diese direkt nach dem DeleteFile eingefügt, und in CompileC unten am Ende vor der If:

Code: [AUSKLAPPEN]
   If Sys( cmd )
      Throw "Build Error: failed to compile "+src
   EndIf
.



Das ganze läuft dann wie folgt:
Neben den source-files können noch 4 weitere Dateien existieren, wovon 2 auf jedem OS ausgeführt werden:

- *SourceFile*.cmd
- *SourceFile*.win32.cmd
- *SourceFile*.macos.cmd
- *SourceFile*.linux.cmd

Die Datei *SourceFile*.cmd wird auf jedem OS ausgeführt, die anderen auf ihrem jeweiligen OS. Wenn sie nicht existieren, werden sie einfach ignoriert.


Was haltet ihr davon? Und ist es im richtigen Forum?

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group