1

我正在尝试使用clang_complete作为 vim C++ 完成。我必须注意我也在使用病原体。我采购了为 clang-pathogen 提供的 vimball,并将所有内容都放在我的~/.vim/bundle/Clang_complete目录中,一切都像魔术一样工作......我的STLBoost完成工作正常。

这是我所做的:


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的生成正确,我该怎么办?我试着跑

statquant@euclide:~/.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'.
4

1 回答 1

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构建,无论您当前的构建是否是最新的。这样,.clang_complete文件始终是最新的。

最后,如果它仍然不起作用,则意味着qmake生成makefile不尊重环境变量CCCXX而是编译器可执行文件的硬编码路径。我不qmake记得makefile.

祝你好运。

于 2012-12-08T22:43:37.510 回答