我在NixOS上,试图编译一个需要linenoise库(它是readline的替代品)的c项目。但在尼克斯帕克斯没有线路噪音。
所以,我想自己补充一下。现在我有这个:
{ 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配置兼容。
最佳答案
在Nixpkgs中很容易绕过configure/make/make安装步骤。您可以使用buildCommand
属性,在这里您可以清楚地指定如何将源转换为包。
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如何找到它的includes。关于c - 将线噪声库添加到nixpkgs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39796088/