【问题标题】:cannot complete qt with clang_complete无法用 clang_complete 完成 qt
【发布时间】:2012-11-26 18:16:36
【问题描述】:

我正在尝试使用 clang_complete 作为 vim C++ 补全。 我必须注意我也在使用pathogen。 我采购了为 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'.

【问题讨论】:

    标签: c++ qt vim clang code-completion


    【解决方案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 轻松检查。

    祝你好运。

    【讨论】:

    • 它起作用了!只需 chmod +x python 脚本!非常感谢
    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 2012-12-27
    • 2012-11-09
    • 2013-02-12
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 2013-09-19
    相关资源
    最近更新 更多