Использование команды make vim с make-файлом, который запускает make в подкаталогах - PullRequest
3 голосов
/ 20 июня 2011

У меня есть настройка проекта, в которой есть несколько подпроектов со своими собственными файлами make. В главном каталоге есть главный файл make, который вставляет компакт-диск в каждый проект и запускает make в правильном порядке.

Команда makefile выглядит следующим образом:

sub-project/sub-project.a:
    cd sub-project ; make

Проблема, с которой я столкнулся, заключается в том, что когда я запускаю make в vim и сообщаю об ошибке, vim пытается открыть файл, основываясь на относительном пути внутри любого проекта, в котором произошла ошибка. Есть ли способ заставить vim получить относительный путь из корневого каталога вместо каталога подпроекта?

Ответы [ 2 ]

5 голосов
/ 20 июня 2011

Убедитесь, что ваш make-файл сообщает, когда он входит и выходит из подкаталогов, как показано ниже:

make[1]: Entering directory `/home/username/projects/projectname/subdir1'
[... compile commands ...]
make[1]: Leaving directory `/home/username/projects/projectname/subdir1'

По моему опыту, vim будет анализировать эту часть вывода, чтобы найти правильные пути для файлов сошибки.Кроме того, по моему (разочарованному) опыту, полученному несколько лет назад, vim без сообщений не знает, где искать файлы, на которые ссылаются сообщения об ошибках.

Обратите внимание, что это работает даже при рекурсивном построении подкаталогов, так какв этом примере:

make[1]: Entering directory `/home/username/projects/projectname/subdir1'
make[2]: Entering directory `/home/username/projects/projectname/subdir1/blah'
[... compile commands ...]
make[2]: Leaving directory `/home/username/projects/projectname/subdir1/blah'
make[1]: Leaving directory `/home/username/projects/projectname/subdir1'
2 голосов
/ 11 ноября 2011

:make -w достаточно для создания списка каталогов, который важен для vim, чтобы понять текущий каталог, который компилируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...