在vim中管理多个makefile

在vim中管理多个makefile,vim,makefile,Vim,Makefile,我想在Vim中有效地管理不同的项目。当需要重建时,我在不同的位置有几个makefile。在Vim中,如果我使用:make,它将尝试在我的当前位置编译Makefile 我可以使用or:make-f URL-MAKEFILE,但这太麻烦了。有没有一种方法或插件可以高效地构建所有这些单独的makefile,而无需我记住所有makefile url?我不知道是否有这样的插件,但你可以为你的url创建一种快捷方式。 创建主makefile并添加以下目标: .PHONY : shortcut m

我想在Vim中有效地管理不同的项目。当需要重建时,我在不同的位置有几个makefile。在Vim中,如果我使用
:make
,它将尝试在我的当前位置编译Makefile


我可以使用or
:make-f URL-MAKEFILE
,但这太麻烦了。有没有一种方法或插件可以高效地构建所有这些单独的makefile,而无需我记住所有makefile url?

我不知道是否有这样的插件,但你可以为你的url创建一种快捷方式。 创建主makefile并添加以下目标:

.PHONY : shortcut
      make -f URL target

之后,您可以直接调用
:创建快捷方式

不知道是否有这样的插件,但您可以为URL创建一种快捷方式。 创建主makefile并添加以下目标:

.PHONY : shortcut
      make -f URL target

之后,您可以调用
:make shortcut

我正在维护多个项目,每个项目都有自己的makefile和众多脚本中的一个


实际上,我还在用我的插件封装
&makeprg
选项的更新(更喜欢Vim插件管理器来安装它)。它更进一步,使我能够选择编译目录和其他选项(这在使用CMake生成makefile时非常有用)。请参阅两个*.vim文件。

我正在维护多个项目,每个项目都有自己的makefile和众多脚本中的一个


实际上,我还在用我的插件封装
&makeprg
选项的更新(更喜欢Vim插件管理器来安装它)。它更进一步,使我能够选择编译目录和其他选项(这在使用CMake生成makefile时非常有用)。查看两个*.vim文件。

您可以指示vim在目录结构中向上查找一个“Makefile”文件,然后调用:makewithit

:exec ":make -f " . findfile("Makefile", ".;")
这样,它将调用与当前打开的缓冲区的项目树相关的Makefile

但是,我建议不要过多地使用make-f path_to_makefile,因为它会在您所在的目录中启动make命令。通常,Makefiles被编写为在项目树的顶部使用(然后最终在子目录中调用更多Makefile),因此更自然地调用“make-C路径到树的顶部”

要向上查找包含Makefile的第一个目录,请使用它调用:make-C:

:exec ":make -C " . fnamemodify(findfile("Makefile", ".;"), ":h")

您可以指示vim在目录结构中向上查找一个“Makefile”文件,然后调用:makewithit

:exec ":make -f " . findfile("Makefile", ".;")
这样,它将调用与当前打开的缓冲区的项目树相关的Makefile

但是,我建议不要过多地使用make-f path_to_makefile,因为它会在您所在的目录中启动make命令。通常,Makefiles被编写为在项目树的顶部使用(然后最终在子目录中调用更多Makefile),因此更自然地调用“make-C路径到树的顶部”

要向上查找包含Makefile的第一个目录,请使用它调用:make-C:

:exec ":make -C " . fnamemodify(findfile("Makefile", ".;"), ":h")

这是我喜欢的方式!很容易记住。谢谢p、 如果我想做一个'干净'我需要有一个专门的命令为每个项目。你也可以这样做吗?你可以为每个目标调用多个命令,即:false:clean;使-f prj1u makefile干净;使-f prj2_makefile干净;P.S.考虑“,”作为新的简单而美好的一个,非常感谢。这就是我喜欢的方式!很容易记住。谢谢p、 如果我想做一个'干净'我需要有一个专门的命令为每个项目。你也可以这样做吗?你可以为每个目标调用多个命令,即:false:clean;使-f prj1u makefile干净;使-f prj2_makefile干净;P.S.考虑“,”作为新的简单而美好的一个,非常感谢。