ich bau mir gerade mit Lazarus ein kleines Buildprogramm, das mein eigentliches Programm erzeugt und noch andere Kleinigkeiten rund um das bauen abhandelt. Einen eigenen Buildserver (Jenkins und co) lohnt sich dafür nicht. Das ganze aktuell noch unter Windows, später soll das ganze dann unter Linux laufen.
Ich habe mir aus Lazarus die entsprechende Parameterliste gezogen und kann damit das Projekt aus einer Konsole mit fpc auch erzeugen.
Das ganze habe ich dann in ein kleines Programm gepackt:
Code: Alles auswählen
process := TProcess.Create(nil);
process.executable := fpc.Text; // c:\Lazarus\fpc\...\fpc.exe
process.CurrentDirectory := edtSourceDir.Text; //Verzeichnis mit der Projektdatei
process.Parameters.text := mmFpcParams.Text; //Parameter aus Lazarus
process.options := process.Options + [poWaitOnExit, poUsePipes];
process.Active := true;
if Assigned(process.Output) then
mmOutput.Lines.LoadFromStream(process.Output);
process.Free;
Unter Process.StdErr kommt nichts zurück.
Mir fehlt gerade die Idee, warum das so in die Binsen geht. Oder macht es mehr Sinn hier auf Plattformspezifische Befehle zurück zu greifen, weil das Ziel wird sein, dass das Programm zukünftig unter linux laufen soll...