我有以下别名,这简化了我在从项目移动到项目时的工作流程:
alias mk='make -f ${ACTIVE_MAKEFILE}'
一些背景知识:makefile位于一个单独的目录中,所有目录都在一起,其名称与它们引用的项目相关。我没有将它们保存在项目目录中,因为:
umbrella
项目。这很好......但是:我失败了。执行mk <TAB>
并没有向我显示可用的Makefile目标,因此使用别名实际上会降低我的工作流程效率。
我认为不是告诉make使用带有-f
标志的特定makefile,我可以设置一个env变量来告诉make,就像这样:
export MAKEFILE=my-makefile
然后是命令:
make
将自动使用我的my-makefile
。由于命令没有改变,自动完成将继续工作。
但该选项不存在,或者我无法找到make用于选择Makefile
我可以设置什么env变量(如果有)告诉make
使用特定的makefile?
答案 0 :(得分:1)
评论中最初建议的两个选项:
您是否考虑在每个目录中创建一个符号链接,其中包含一个固定的统一名称(可能称为makefile
或Makefile
,甚至delavnog.mk
),指向相关的目录外makefile?您的别名只是使用此固定名称,并确保您的VCS忽略本地符号链接,以便它不会被推送到中央存储库?
作为替代方案,使用shell脚本(可能是dlnmk
)而不是别名,并且应用您必须使用的规则为您找到makefile(因此脚本确定正确的名称和makefile的位置,然后使用正确的make
选项调用-f
。开销将是微不足道的,你将你的想法封装到一个脚本中,所以你不必再考虑它了。
在这两个中,我可能会使用脚本,但是我只是在编写脚本。我目前在我的$HOME/bin
目录中有大约400个脚本,并且在相关的RCS目录中保存了近900个脚本 - 我已经这样做了一段时间而且Git在前20年左右不是一个选项(因为它还不存在。)