gpt4 book ai didi

c - 将 linenoise 库添加到 nixpkgs

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

我在 NixOS 上,试图编译一个需要 linenoise 的 c 项目库(它是 readline 的替代品)。但 linenoise 在 nixpkgs 中不可用。

所以,我正在尝试自己添加它。目前我有这个:

{ stdenv, fetchgit }:

stdenv.mkDerivation rec {
name = "linenoise-${version}";
version = "git-2016-09-30";

src = fetchgit {
url = "https://github.com/antirez/linenoise.git";
rev = "c894b9e59f02203dbe4e2be657572cf88c4230c3";
sha256 = "0wasql7ph5g473zxhc2z47z3pjp42q0dsn4gpijwzbxawid71b4w";
};

meta = {
homepage = https://github.com/antirez/linenoise;
description = "A minimal, zero-config, BSD licensed, readline replacement.";
platforms = stdenv.lib.platforms.unix;
};
}

我有两个问题:

1: Linenoise 只是一对 c 头文件/源文件,旨在直接包含在使用 linenoise 的项目中。换句话说,不需要编译,只需添加这些文件就足够了。当前的推导显然是尝试 configure/make/make install 但我根本不知道该怎么做。

2: Linenoise 需要通过 pkg-config 访问。

最佳答案

在 Nixpkgs 中绕过 configure/make/make install 步骤非常容易。您可以使用 buildCommand 属性,您可以在其中明确指定如何将源代码转换为包。

buildCommand = ''
mkdir -p $out/include
cp $src/linenoise.c $out/include/
cp $src/linenoise.h $out/include/
'';

$src 变量的技巧也很简单:您在 mkDerivation 中定义的几乎每个属性都可以在构建命令中以相同的名称使用。您可以使用 src_libnoise = fetchgit ... 然后将其称为 $src_libnoise

至于 pkg-config 的东西,我不确定它是否尊重 include 目录,所以你必须弄清楚 pkg-config 如何找到它的 includes。

关于c - 将 linenoise 库添加到 nixpkgs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796088/

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