2011-06-20 40 views
3

我有一個項目設置,它有多個子項目,都有自己的make文件。在主目錄中有一個主make文件,cd將進入每個項目並以正確的順序運行make。使用vim的make命令和一個在子目錄上運行make的生成文件

的makefile文件命令如下:

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

我的問題是,當我運行make在vim和報告錯誤,Vim試圖根據從任何內部的相對路徑來打開文件項目有錯誤。有沒有辦法讓vim從根目錄而不是子項目目錄獲取相對路徑?

回答

5

確保當它進入和離開子目錄你的makefile是報告如下:

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' 
+0

非常感謝!這工作。我使用我自己的自定義輸出將makefile靜音,以使輸出更清晰。當我將Silent取出後,vim開始按預期工作。 – drewag

+0

@drewag:我同意沉默很好......但是如果你這樣做了,就回來添加一個類似的輸出。那是我之前遇到的那個。幸運的是,當使用vim時,我可以輕鬆地跳過額外的東西來做輸出,並直接進入錯誤,所以我現在對它沒那麼挑剔。 –

+0

我一直在爲此苦苦掙扎,因爲我確信我的遞歸構建系統中出現了問題,因爲我最近也在那裏做了一些更改。感謝這篇文章,我能夠指出問題@Caleb:事實證明,你是絕對正確的,vim將解析這些字符串並跟蹤構建輸出。但是(至少在我的情況下)只有當地區是「正確的」。我對該問題的解決方案是在.env中添加導出LC_ALL = en_CA.UTF-8,我總是有這個問題。不知道這是否是vim中的一個錯誤(當然,vim應該表現出與區域設置無關的相同行爲)。 –

2

:make -w是不夠好,生成的目錄列表項,重要的是VIM,瞭解被編譯的當前目錄。