2013-02-01 31 views
1

我的C++項目使用CMake爲編譯器和外部庫創建生成文件從boost。我選擇的編輯器是vim。 在命令行中運行$ make工作,但:make在vim具有在連接階段和問題回報:Vim和環境模塊:編譯通過:make不知道提升

/usr/bin/ld: cannot find -lboost_system  

不過,我也用:make install把我的項目在$HOME/usr/stow/<prog>,我測試和使用程序。因此,我正在尋找一種解決方案,使連接階段成功。

進一步瞭解詳細:

正是在out-of-src build目錄。因此,我已經配置makeprg

:set makeprg=make\ -C\ ../build/Release/ 

更近的提升版本被安裝,並通過我在我的項目依賴Environment Modules Project的系統上提供。較新版本的提升可以通過

$ module load boost 

我已經加入這一行被加載到我的$HOME/.profile,讓我不必在每次我編譯時間打電話給它做。

我檢查了問題(G)VIM uses a different $PATH than my system討論vim中使用的環境變量。

UPDATE:問題只發生在gvim從窗口管理器(gnome2)開始,而不是從命令行/ bash開始的(g)vim。

回答

3

如果它工作在命令行,但不是在VIM,看看有什麼在您的環境不同

:!env | sort > env-vim 

然後

$ env | sort | diff env-vim - 

很可能事情是設置LD_LIBRARY_PATH包括非你的boost庫的標準目錄並沒有顯示在vim的子shell環境中。也許你是從桌面圖標而不是命令行啓動vim? (如果是這種情況,命令行中的vim /:make將會是一個有趣的測試)。

爲了得到一個變量進入VIM子shell,將它添加到的〜/ .vimrc

let $LD_LIBRARY_PATH="*your library path*" 

我會評論,而不是回答,但我還沒有贏得那本事,但。由於昨天有人問我給了它射擊。

+0

感謝您的回答。這真的很有幫助。現在我可以弄明白了。它實際上只有gvim,在命令行中鏈接問題而不是vim。實際上,我必須設置env變量'$ LIBRARY_PATH':'let $ LIBRARY_PATH =「/ apps/boost/1_50_0/lib /:".$ LIBRARY_PATH'。 – Hotschke

+0

有關類似問題的人的更多信息,請參閱以下網站:[vim.wikia.com/EnvVar](http://vim.wikia.com/wiki/Environment_variables),[ld-library-path-vs-library-路徑](http://stackoverflow.com/questions/4250624/ld-library-path-vs-library-path)和[回覆:gvim - 環境/ bashrc未加載](http://vim.1045645.n5。 nabble.com/gvim-environment-bashrc-not-loaded-tp1179930p1179931。html) – Hotschke

+0

很高興爲你工作。感謝您將指針添加到LD_LIBRARY_PATH和LIBRARY_PATH之間的區別 – JohnQ