I often have similar properties in many stanzas of my .cabal
files. E.g.
Library x
...
ghc-options:
-O2 -Wall -fno-warn-missing-signatures -fwarn-incomplete-patterns
-fno-warn-name-shadowing
Executable y
...
ghc-options:
-O2 -Wall -fno-warn-missing-signatures -fwarn-incomplete-patterns
-fno-warn-name-shadowing
Keeping them consistent is tedious and error-prone. Is there a better way?
Even trickier is when the fields are similar but not exactly the same e.g. when I have several executables which have common build dependencies but small variations.
ghc-options
fields per component (yes, that's possible), thereby making the shared options completely identical and the differences easier to maintain; and (B) generate your Cabal file from some other source that does not contain redundant information.