我在NixOS上,试图编译一个c项目,它需要林诺瓦库(这是对readline的替代)。但是在尼克斯基斯没有林诺瓦。
所以,我想自己加进去。现在我有这样的想法:
{ 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来访问。
发布于 2016-11-11 05:12:19
在Nixpkgs中很容易绕过配置/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如何找到它的包含。
https://stackoverflow.com/questions/39796088
复制相似问题