我想通过Stack和HPack使用hsc2hs。问题是,由于HPack不允许我将.hsc
文件列为源文件,因此只有.hs
,对.hsc
文件的更改不会触发stack build
中的重建。
我的package.yaml
文件如下:
name: bounce-bench
version: 0.1.0
category: acme
dependencies:
- base
source-dirs:
- src
executables:
sim-ffi:
source-dirs: sim
main: sim-ffi.hs
build-tools: hsc2hs
c-sources:
- csim/Bounce.h
- csim/Bounce.c
include-dirs: csim
使用上述文件,初始stack build
成功(包括从sim-ffi.hs
构建sim-ffi.hsc
,但是,如果更改stack build
,则随后的sim-ffi.hsc
调用将不执行任何操作。
如果我尝试将main
键的值从sim-ffi.hs
更改为sim-ffi.hsc
,则会明确告知我:
Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.5: The 'main-is' field must specify a
'.hs' or '.lhs' file (even if it is generated by a preprocessor), or it may
specify a C/C++/obj-C source file.
.hs
文件保留为main
,但在.hsc
中列出sources
文件,即: sim-ffi:
source-dirs: sim
main: sim-ffi.hs
sources: sim/sim-ffi.hsc
build-tools: hsc2hs
c-sources:
- csim/Bounce.h
- csim/Bounce.c
include-dirs: csim