2012-12-08 88 views
1

我想使用clang_complete作爲vim C++完成。 我必須注意到我也在使用pathogen。 我購買了甕病菌提供的vimball,並把所有東西放在我的~/.vim/bundle/Clang_complete目錄中,並且所有東西都像魔術一樣... 我的STLBoost完成工作正常。無法完成qt與clang_complete

這裏是我做過什麼:


1 /創建一個test_qt.cpp文件

#include <QApplication> 
#include <QWidget> 
int main(int argc, char *argv[]) 
{ 
QApplication app(argc, argv); 
QWidget window; 
window.resize(250, 150); 

window.setWindowTitle("Simple example"); 
window.show(); 
return app.exec(); 
} 

2 /跑qmake -project


3 /跑qmake -o Makefile testFiles.pro


4 /跑make

make 
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o test_qt.o test_qt.cpp 
g++ -m64 -Wl,-O1 -o testFiles test_qt.o -L/usr/lib/x86_64-linux-gnu -lQtGui -lQtCore -lpthread 

5 /跑./testFiles,一切都很好,我得到了一個愚蠢的窗口...

所以我不明白爲什麼我無法獲得qt完成... 我的Makefile正確生成,我該怎麼辦? 我試圖運行

[email protected]:~/.vim/testFiles$ make CC= '~/.vim/bundle/Clang_Complete-Pathogen/bin/cc_args.py' CXX='~/.vim/bundle/Clang_Complete-Pathogen/bin/cc_args.py' 

不過的了:

所有的
make: Nothing to be done for `/home/statquant/.vim/bundle/Clang_Complete-Pathogen/bin/cc_args.py'. 

回答

1

首先,你有多餘的空格在您的命令:

make CC=<HERE>'~/.vim/bundle/Clang_Complete-Pathogen/bin/cc_args.py' CXX='~/.vim/bundle/Clang_Complete-Pathogen/bin/cc_args.py' 

你應該將其刪除。其次你的命令是錯誤的 - 你沒有指定編譯器。總之,它應該是這樣的:

make CC='~/.vim/bundle/Clang_Complete-Pathogen/bin/cc_args.py gcc' CXX='~/.vim/bundle/Clang_Complete-Pathogen/bin/cc_args.py g++' -B 

這是因爲,從本質上講,cc_args.py將作爲包裝(編譯器可執行文件)採取行動,記錄哪些-I-D,和其他標誌項目的編譯過程中傳遞。然後它將巧妙地將所有標誌轉發給編譯器本身 - 因此項目構建正確。請參閱:h clang_complete-cc_args並參閱cc_args.py以獲得更好的理解 - 這是微不足道的。

注:-B標誌用於強制make打造,無論你的當前版本是否是最新-to-日期或不是。這樣,.clang_complete文件始終是最新的。

最後,如果畢竟它仍然無法正常工作,那麼就意味着qmake產生makefile不尊重CCCXX環境變量,但是編譯器可執行文件的比較硬編碼路徑。我不記得qmake是否屬於這種情況,但如果全部都失敗了,那麼這是唯一的原因 - 您可以通過檢查生成的makefile來輕鬆檢查。

祝你好運。

+0

它的工作!只需要chmod + x python腳本! 非常感謝 – statquant