vim中的递归makefile < >我的C++项目由多个目录组成,每个目录都有自己的Mag文件。上一级,我还有一个顶级makefile,它按顺序调用其他的makefile
在vim中,我想创建顶级makefile或子makefile。我想在vim中看到我的错误,在一行上按ENTER键跳转到源代码行 这是使用vim中的递归makefile < >我的C++项目由多个目录组成,每个目录都有自己的Mag文件。上一级,我还有一个顶级makefile,它按顺序调用其他的makefile,vim,g++,makefile,Vim,G++,Makefile,在vim中,我想创建顶级makefile或子makefile。我想在vim中看到我的错误,在一行上按ENTER键跳转到源代码行 这是使用 make|copen 但一次只有一个目录。错误窗口中列出的文件名只是一个名称,没有路径。如果您尝试构建顶级makefile并按ENTER键输入文件名/行号,则它不知道文件的路径 有办法解决这个问题吗?我想从vim中构建顶级makefile,无论错误在哪个目录中,都可以跳转到正确的文件。问题可能是g++只输出文件名,而不输出路径。您可以给Vim一个自定义命令来执
make|copen
但一次只有一个目录。错误窗口中列出的文件名只是一个名称,没有路径。如果您尝试构建顶级makefile并按ENTER键输入文件名/行号,则它不知道文件的路径
有办法解决这个问题吗?我想从vim中构建顶级makefile,无论错误在哪个目录中,都可以跳转到正确的文件。问题可能是g++只输出文件名,而不输出路径。您可以给Vim一个自定义命令来执行
:make
:
:set makeprg=make\ -f\ /path/to/your/toplevel/makefile
您可以在vim中创建到以下内容的映射
!find .. -type d -exec make -C {} \;
比如:
map <F12> <esc>:!find .. -type d -exec make -C {} \;<cr>
:make -C .. | copen
'errorformat'
有一个内置的机制;from:help errorformat
:
某些编译器生成由目录名组成的消息,这些目录名必须
在%f读取的每个文件名前面加上前缀(例如:GNU make)。以下
代码可用于扫描这些目录名;它们将存储在一个容器中
内部目录堆栈。E379
%D“输入目录”格式字符串;期待着一个追随者
%查找目录名的
%X“离开目录”格式字符串;需要以下%f
定义“输入目录”或“离开目录”格式时,“%D”或
“%X”必须在该子字符串的开头给出。Vim跟踪目录
更改当前目录,并将其前置到使用
相对路径。请参阅| quickfix目录堆栈|了解详细信息、提示和提示
限制
因此,您需要让Makefile输出这些“更改目录”消息,并确保通过
'errorformat'
设置正确解析这些消息。我尝试了这个,然后打开其中一个子文件并“make | copen”。错误列表包含一个没有目录的文件名,因此它不会打开现有的文件,而是一个新的空文件。我需要熟悉errorformat,所以目前正在寻找一些好的阅读方法。开始阅读vim帮助,很快就迷路了。当我理解了这些信息后,我会向你汇报。如果你不想自己输出这些信息,make-w
。