使用以下设置,作为C ++ IDE的Archlinux用户,使用Emacs:company / flycheck / lsp-ui / ccls
我正在尝试为个人使用使用c++17的filesystem
库,但我无法在Emacs中摆脱这个错误
ccls:名称空间'std'中没有名为'filesystem'的成员
我的问题快速样本
#include <iostream>
#include <filesystem>
int main(int argc, char** argv) {
std::filesystem::path filePath("./sample.cpp");
std::cout << filePath.filename() < std::endl;
return 0;
}
使用以下命令编译和运行是完全没问题的:
clang++ -std=c++17 sample.cpp
输出:"sample.cpp"
但在Emacs中仍然存在所谓的“错误”,这有点烦人。我尝试添加 .ccls
文件并使用以下内容,但这并没有解决问题。
clang++
%cpp -std=c++17 ; Also tried with gnu++17
这是一个问题截图。我猜
cout
和filePath
的错误是第一个错误的结果,因为总体来说一切都很好。是否有人知道如何解决这个问题?截图。
.ccls
文件有效。如果你检查一下缓冲区*ccls::stderr*
,你是否看到了一行像这样的内容:22:14:20 ccls project.cc:284 I use /home/geza/st/.ccls: clang++ %cpp -std=c++17
?顺便说一句,你可以尝试使用compile_commands.json
的方式,它很容易使用,只要你使用bear
来生成它。 - gezaclang failed with error 1: /usr/bin/clang -fsyntax-only -Xclang -code-completion-macros -x c++ -Xclang -code-completion-at=-:8:6 -
我尝试使用bear
和我正在使用的makefile
生成compile_commands.json
文件,但它并没有解决问题。 - Cerclique