首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向nixpkgs添加linenoise库

向nixpkgs添加linenoise库
EN

Stack Overflow用户
提问于 2016-09-30 16:29:54
回答 1查看 179关注 0票数 1

我在NixOS上,试图编译一个c项目,它需要林诺瓦库(这是对readline的替代)。但是在尼克斯基斯没有林诺瓦。

所以,我想自己加进去。现在我有这样的想法:

代码语言:javascript
复制
{ 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只是一对使用Linenoise的项目中直接包含的c头/源文件。换句话说,不需要进行编译,仅仅添加这些文件就足够了。对于当前的派生,显然是要尝试configure/make/make install,但我只是不知道如何不这样做。

2: Linenoise需要使用pkg-config来访问。

EN

回答 1

Stack Overflow用户

发布于 2016-11-11 05:12:19

在Nixpkgs中很容易绕过配置/make/make步骤。您可以使用buildCommand属性,在该属性中明确指定如何将源转换为包。

代码语言:javascript
复制
buildCommand = ''
  mkdir -p $out/include
  cp $src/linenoise.c $out/include/
  cp $src/linenoise.h $out/include/
'';

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

至于pkg-config的内容,我不确定它是否符合include目录,所以您必须弄清楚pkg-config如何找到它的包含。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39796088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档