Khi tôi sử dụng các macro MIN_VERSION_
khác nhau của Cabal trong một dự án Haskell, làm cách nào để đảm bảo chúng được xác định chính xác khi tôi không sử dụng cabal, ví dụ: khi thử nghiệm trong GHCi?Tôi làm cách nào để sử dụng MIN_VERSION_ của cabal và các macro khác bằng ghci?
Trả lời
Ngày nay, cabal
hỗ trợ một tiểu nhóm cabal repl
, tất cả thiết lập cho bạn, vì vậy ít nhất là đối với ghci
, điều sau là không cần thiết. Tuy nhiên:
Lệnh cabal build
tạo tệp dist/build/autogen/cabal_macros.h
, chứa tất cả định nghĩa bạn cần. Để bao gồm tệp đó trong lệnh gọi ghc, bạn sẽ cần cờ -optP-include -optPdist/build/autogen/cabal_macros.h
.
Để thuận tiện, bạn có thể đặt sau đây trong một tập tin .ghci
trong thư mục dự án:
:set -optP-include -optPdist/build/autogen/cabal_macros.h
để bạn không cần phải gõ ra các tùy chọn mỗi khi bạn muốn sử dụng ghci. Tuy nhiên, hãy chú ý: các macro sẽ được xác định theo cấu hình khi bạn chạy lần cuối cabal build
và sẽ không được cập nhật khi bạn cài đặt gói mới hoặc sử dụng phiên bản GHC khác: để bạn cần phải định cấu hình lại và xây dựng lại gói.
(Cảm ơn Simon Hengel trong danh sách thư viện về sự khôn ngoan này: http://www.haskell.org/pipermail/libraries/2012-September/018491.html).