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 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
?
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:
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.
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%