【问题标题】:asking question while installing with makefile在使用 makefile 安装时提出问题
【发布时间】:2011-06-06 22:49:07
【问题描述】:

我正在尝试为我的库创建一个安装文件,该文件包含 3 个部分,第 2 部分依赖于第 1 部分,第 3 部分依赖于第 2 部分和第 1 部分。

可能有人只想安装一个部分,现在makefile应该检查是否已经在前缀位置安装了其他必需的部分,如果没有,询问用户是否确定安装该部分?

例如要安装part 2,makefile 应该检查part 1 是否安装,如果没有安装问“你确定要在part1 之前安装part 2?”

我应该补充一点,在 make 文件中已经有 4 个目标,make part1make part2make part3make all。如果有人安装了 part3 而没有安装 part2 或 1 也没有问题,但我想验证一下,因为可能有人安装了错误的部分

我该怎么做? 任何想法都会被欣赏

【问题讨论】:

  • 为什么要问这个问题?您真的要允许用户安装无法工作的部件吗?

标签: linux makefile installation configure


【解决方案1】:

这是不好的形式。让运行 make 的人将变量传递给它,包含适当的值。

【讨论】:

  • make 文件中已经有 4 个目标,make part1、make part2、make part3 和 make all。如果有人安装了 part3 而没有安装 part2 或 1 也没有问题,但我想验证一下,因为可能有人安装了错误的部分
  • 然后让part3依赖part2,然后依次依赖part1。如果用户将它们安装在默认位置之外,则需要指定该位置才能找到它们。
  • 是的,生硬,正如我在前缀位置的问题中提到的那样,所以如果他们已经安装在某个地方,现在他们想安装在其他地方,程序必须提出这个问题
  • 在运行 make 时不要提问。标准做法是使用 ./configure 脚本来询问此类问题。
  • 但是在执行 ./configure 之后,我们决定应该安装哪个部分,例如 ./configure 然后 make part2。在这种情况下我们如何使用 configure.ac?
【解决方案2】:

在我看来,要安装 part2 make 必须同时安装 part1part2。这必须声明为依赖项。那么part3 依赖于part2,这意味着make part3 必须安装所有三个部分:part1 因为part2 依赖于它,而part2 因为part3 依赖于part3

这样,all 目标必须依赖于part3,一切都会被安装。

make 不应该提问,而是自动解决依赖关系。 如果用户想安装part3,那么它的依赖关系也必须安装;否则就不行了,对吧?

【讨论】:

  • 感谢您的回答,是的,这就是目标,例如它的工作原理是这样的,但是如何避免重新安装?我的意思是安装part2,如果part1已经安装,就不应该再安装了
  • @mahD 这将取决于如何检测它是否已安装。可能有两种可能的方法: 1. 创建额外的目标或声明依赖项,以便 make 能够自行解决; 2. 在partX 目标中编写类似于bash 脚本的内容。它将检查预期的文件,并仅在未找到时执行复制。
猜你喜欢
  • 1970-01-01
  • 2014-06-03
  • 2018-07-17
  • 2018-12-05
  • 1970-01-01
  • 2021-09-01
  • 2019-08-29
  • 2011-03-11
  • 2012-09-02
相关资源
最近更新 更多