使用env变量指定makefile

时间:2016-08-30 14:11:04

标签: linux bash ubuntu makefile

我有以下别名,这简化了我在从项目移动到项目时的工作流程:

alias mk='make -f ${ACTIVE_MAKEFILE}'

一些背景知识:makefile位于一个单独的目录中,所有目录都在一起,其名称与它们引用的项目相关。我没有将它们保存在项目目录中,因为:

  1. 他们是我的私人makefile,我不想将它们提交给repo
  2. 我实际上想跟踪这些变化,所以他们必须在回购中。为此,我有一个umbrella项目。
  3. 这很好......但是:我失败了​​。执行mk <TAB>并没有向我显示可用的Makefile目标,因此使用别名实际上会降低我的工作流程效率。

    我认为不是告诉make使用带有-f标志的特定makefile,我可以设置一个env变量来告诉make,就像这样:

    export MAKEFILE=my-makefile
    

    然后是命令:

    make
    

    将自动使用我的my-makefile。由于命令没有改变,自动完成将继续工作。

    但该选项不存在,或者我无法找到make用于选择Makefile

    的env变量的名称

    我可以设置什么env变量(如果有)告诉make使用特定的makefile?

1 个答案:

答案 0 :(得分:1)

评论中最初建议的两个选项:

  1. 您是否考虑在每个目录中创建一个符号链接,其中包含一个固定的统一名称(可能称为makefileMakefile,甚至delavnog.mk),指向相关的目录外makefile?您的别名只是使用此固定名称,并确保您的VCS忽略本地符号链接,以便它不会被推送到中央存储库?

  2. 作为替代方案,使用shell脚本(可能是dlnmk)而不是别名,并且应用您必须使用的规则为您找到makefile(因此脚本确定正确的名称和makefile的位置,然后使用正确的make选项调用-f。开销将是微不足道的,你将你的想法封装到一个脚本中,所以你不必再考虑它了。

  3. 在这两个中,我可能会使用脚本,但是我只是在编写脚本。我目前在我的$HOME/bin目录中有大约400个脚本,并且在相关的RCS目录中保存了近900个脚本 - 我已经这样做了一段时间而且Git在前20年左右不是一个选项(因为它还不存在。)