我正在使用inline-c并且我有兩個 C 檔案,我想在 Haskell 代碼中呼叫它們。中Cabal file,有:
include-dirs: cbits
, /usr/local/include
c-sources: cbits/genann.c
在Cbits目錄中,還有genann.h
我可以毫無問題地構建和運行專案,但是當我這樣做時cabal install,編譯器抱怨它找不到 C 頭檔案。
我檢查了 Cabal 手冊并添加了以下選項:
includes: cbits/genann.h
install-includes: cbits/genann.h
這次我得到:
Configuring executable 'inline-gsl' for inline-gsl-0.1.0.0..
cabal-3.6.2.0: Missing dependency on a foreign library:
* Missing (or bad) header file: cbits/genann.h
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
這里哪里錯了?我是否需要將 C 代碼編譯成目標代碼并將它們放入系統中?
完整的 Cabal 檔案:
cabal-version: 2.4
name: inline-gsl
version: 0.1.0.0
-- A short (one-line) description of the package.
-- synopsis:
extra-source-files: CHANGELOG.md
executable inline-gsl
main-is: Main.hs
build-depends: base ^>=4.14.3.0
, inline-c
, vector
, massiv
, array
, bytestring >= 0.10
, template-haskell
hs-source-dirs: app
pkgconfig-depends: glib-2.0, gtk4, gsl
default-language: Haskell2010
extra-libraries: m, tensorflow
extra-lib-dirs: /usr/local/lib
cc-options: -Wall -m64 -O4
include-dirs: cbits
, /usr/local/include
includes: cbits/genann.h
install-includes: cbits/genann.h
c-sources: cbits/genann.c
uj5u.com熱心網友回復:
我可以毫無問題地構建和運行專案,但是當我進行 cabal install 時,編譯器抱怨它找不到 C 頭檔案。
我相信這表明問題在于您的頭檔案未包含在您的包源 tarball (sdist) 中。您需要extra-source-files在 cabal 檔案中的欄位下列出所有非 Haskell 源檔案:
extra-source-files: CHANGELOG.md, cbits/genann.h, cbits/genann.c
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/355872.html
標籤:哈斯克尔
