将hsc2hs与HPack和堆栈一起使用

问题描述 投票:0回答:1

我想通过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.
haskell preprocessor haskell-stack hsc2hs hpack
1个回答
0
投票
解决方案是将.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

© www.soinside.com 2019 - 2024. All rights reserved.