Verwendung eines Makefiles mit Kabalen?

8

Ich arbeite an einem Spielzeugprojekt, um meine Freude am Haskell vom theoretischen zum praktischen Teil zu bringen, mache es mir bequemer mit cabal , HUnit , etc.

Ich habe meinem Projekt gerade ein Makefile hinzugefügt:

%Vor%

Weil:

  • cabal-dev install --enable-tests schien übertrieben (und warnte mich vor Neuinstallationen)
  • cabal-dev configure --enable-tests && cabal-dev build && cabal-dev test hat unnötige Arbeit verrichtet, und die Entscheidung, ob ich neu konfigurieren sollte, war langweilig
  • und beide haben viel geschrieben

Ich mache mir Sorgen, dass ich die Funktionalität vielleicht wieder herstelle, indem ich cabal oder cabal-dev mir schon gebe, aber Ich bin nicht vertraut genug, um zu wissen, ob das stimmt, und wenn ja, wie würde ich es tun.

Ist hier ein Makefile angebracht, oder gibt es einen direkteren Weg, dies einfach mit cabal / cabal-dev ?

zu tun?     
rampion 06.09.2013, 03:30
quelle

1 Antwort

1

Unten ist eine vereinfachte Version eines Makefiles, das ich mit einem Cabal-Paket verwende Ich entwickle parallel zu einem anderen Haskell-Programm, das davon abhängt auf dem Cabal Paket (ich bearbeite sie oft parallel und so habe ich die Cabal-Paket als Build-Abhängigkeit des Programms mit einem anderen Makefile: P). Die Ziele sind:

  1. Führen Sie cabal nur aus, wenn sich einige Quelldateien tatsächlich geändert haben. ich benutze dieses Makefile auf einem sehr langsamen Netbook, wo die Kabale ist Abhängigkeitsauflösungsschritt dauert 10 Sekunden, also möchte ich Vermeiden Sie, wenn möglich cabal install auszuführen.

  2. Verfügen über unabhängige Debugging- und reguläre Builds in separaten Builds dirs. Standardmäßig, wenn Sie eine Cabal Build mit Profiling machen ( --ghc-options=-fprof-auto ), und dann ohne Profiling, Cabal beginnt neu und kompiliert alle Dateien von Grund auf neu. Wenn Sie die Builds in separate Build-Verzeichnisse einfügen, vermeiden Sie dieses Problem.

Ich bin mir nicht sicher, dass (2) für Sie von Interesse ist, aber (1) ist wahrscheinlich, und ich sehe dass du nur den Build Dir auf Erfolg, nicht Scheitern, und ich erwarte das wird nicht richtig funktionieren.

Hier ist das Makefile:

%Vor%     
ntc2 08.11.2013 22:35
quelle

Tags und Links