gpt4 book ai didi

c - 使用 Stack 构建时如何包含从 haskell 源文件生成的 'xxx_stub.h' 文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:58 26 4
gpt4 key购买 nike

使用 Stack 构建,我在 src/ 中有一个 lib.hs,在 app/中有一个 main.c 。构建时,lib_stub.h 生成在 .stack-work/dist/x86_64-linux/Cabal-2.2.0.1/build 下。

要将此文件包含在 main.c 中,我要么在 #include 指令后面写一个完整的绝对路径,要么在手动第二遍之前,手动复制 lib_stub.h 文件到 app/,这有点愚蠢。

有没有更好的办法?

更多信息:

我的package.yaml 看起来像

name:                mylib
version: 0.1.0.0
github: "gituser/mylib"
license: BSD3
author: "Author name here"
maintainer: "example@example.com"
copyright: "2018 Author name here"

extra-source-files:
- README.md
- ChangeLog.md

# Metadata used when publishing your package
# synopsis: Short description of your package
# category: Web

# To avoid duplicated efforts in documentation and dealing with the
# complications of embedding Haddock markup inside cabal files, it is
# common to point users to the README.md file.
description: Please see the README on GitHub at <https://github.com/gituser/mylib#readme>

dependencies:
- base >= 4.7 && < 5

library:
source-dirs: src
dependencies:
- free
- mtl

executables:
cont-demo:
main: main.c
source-dirs: app
ghc-options:
- -threaded
# - -rtsopts
# - -with-rtsopts=-N
dependencies:
- mylib

tests:
mylib-test:
main: Spec.hs
source-dirs: test
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- mylib

我的路径结构是这样的

.
├── app
│   ├── MyLib_stub.h
│   └── main.c
├── ChangeLog.md
├── mylib.cabal
├── LICENSE
├── package.yaml
├── README.md
├── Setup.hs
├── src
│   └── MyLib.hs
├── stack.yaml
└── test
└── Spec.hs

app/MyLib_stub.h 是手动复制的,不是自动放在那里的。

最佳答案

如果 Stack 有一些正确的方法来做到这一点,我真的很喜欢它,但据我所知,它没有。

我目前在具有类似要求的项目中所做的是,我复制 _stub.h 文件到更方便的位置,我符号链接(symbolic link) 它。这只需要完成一次,符号链接(symbolic link)可以置于版本控制之下,然后对 LONG_PATH/....h 文件的更新将自动显示在方便的文件中。

$ ln -s dist/build/bla/bla/long/path/MyLib_stub.h app/MyLib_stub.h
$ git add app/MyLib_stub.h

恐怕这在 Windows 上不起作用,但可能有类似的替代方法。

关于c - 使用 Stack 构建时如何包含从 haskell 源文件生成的 'xxx_stub.h' 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com