在第七粒尼克斯丸中给出的示例中,输入:b simple可以生成一个简短的c++程序的派生。在nix-repl中
simple = derivation { name = "simple"; builder = "${bash}/bin/bash"; args = [ ./simple_builder.sh ]; gcc = gcc; coreutils = coreutils; src = ./simple.c; system = builtins.currentSystem; }
:b simple编译源代码并生成包含simple-executable的输出目录。
如果c源发生了一些变化,例如,我们希望输出" simple ?",那么相同的派生简单且具有相同的参数似乎不起作用。
为什么这意味着,即使是c文件中的小改动,也必须给出一个新的名称(?) -argument来进行派生呢?
如果是这样的话,如何用:b adrvn消除nix-repl中的旧派生?
发布于 2017-09-29 23:46:05
问题是,simple是一个值/常量,而不是一个函数。考虑到Nix是纯功能的,无论您计算多少次simple,它总是会产生相同的输出(在同一个nix-repl实例中)。另一方面,使用外部文件(例如。( simple.nix)和使用nix-build将获取派生输入的更改,包括simple.c。
至于清理派生,您可以使用nix-collect-garbage。
https://stackoverflow.com/questions/46490257
复制相似问题