【发布时间】:2020-08-21 18:43:25
【问题描述】:
我不知道我在做什么。我决定使用 Vim 作为我唯一的编辑器,我正在尝试设置自动完成和语法检查。
所以我需要在我的项目的根目录中配置一个.ccls 文件(我不想生成一个compile_commands.json 文件所以请不要告诉我)。但是.ccls 上没有任何详细的文档,因为它所做的只是使用编译器标志,我当然不知道;我不久前开始使用 C++ 并且我不知道任何 CMake,我习惯于从 IDE 运行我的代码!
我知道要放入我的.ccls 的默认代码是我包含的路径,我确实放置了它(这是我使用clang++ -E -x c++ - -v < /dev/null 获得的 5 条路径),顺便说一句,我在 mac 上。我放了这些,我得到了自动补全,但是我的源代码中断了,因为错误告诉我 iostream 和 /usr/local/include 中不存在所有其他标头,即使我提供了 4 个其他路径(它真的没有退出 /usr/local/include 我不'不知道 iostream 和其他人在哪里)并且我不能 cout << "Hello, World!" << endl 例如因为 ostream 和 char[] 不兼容等等。顺便说一句,即使我使用 compile_commands.json 我仍然会收到错误,它只会修复我的标题路径。
谁能解释一下如何使用.ccls?没有链接,只是简单的解释。或者至少是一个默认配置让我继续前进。
P.S 我还需要提供项目头文件的路径吗?
这是我的.ccls:
clang++
%cxx -std=c++17
%cxx -stdlib=libc++
%hxx --include=Global.h
%cxx -I/usr/local/include
%cxx -I/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1
%cxx -I/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include
%cxx -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
%cxx -I/Library/Developer/CommandLineTools/usr/include
【问题讨论】:
-
clang++ -E -x c++ - -v < /dev/null返回的路径是什么? -
/usr/local/include - /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1 - /Library/Developer/CommandLineTools/usr/lib/clang/12.0. 0/include - /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include - /Library/Developer/CommandLineTools/usr/include
-
我认为这并不重要,例如,为什么 ccls 告诉我 ostream 和 char[] 不兼容?我认为这是因为它需要模板实现但找不到它。尽管如此,我还是无法解决任何问题。开始考虑改用 VSCode。
-
iostream应该在/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1之下图书馆。其他头文件将需要其他目录。 -
重读你的问题和cmets后,不知道C++文件是否正确。它编译吗?它发现
ostream和char[]不兼容的事实确实很奇怪。
标签: c++ vim compiler-errors linker