相关疑难解决方法(0)

Clang看不到基本标题

我试图用Clang在Fedora 20上编译简单的hello world,我得到以下输出:

d.cpp:1:10:致命错误:找不到'iostream'文件

#include <iostream>

我不知道如何解决它.

c++ clang llvm-clang c++11 clang++

46
推荐指数
5
解决办法
6万
查看次数

clangd 无法识别标准标头

这个问题已被问过并回答过很多次,但似乎没有一个答案对我有用。

我一直在尝试clangd在 nvim lsp 中进行设置。我使用bear来生成compile_commands.json,但 clangd 仍然给我错误,告诉我它找不到标准库头。这是一个最小的例子:

主要.cpp:

#include <iostream>
using namespace std;

int main(){
  cout << "hello clangd";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我运行:bear -- g++ main.cpp,它编译并创建一个compile_commands.json包含以下内容的文件:

[
  {
    "arguments": [
      "/usr/bin/g++",
      "-c",
      "main.cpp"
    ],
    "directory": "/home/xxx/tmp/hello_clangd",
    "file": "/home/xxx/tmp/hello_clangd/main.cpp"
  }
]
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 cmake 标志进行编译来生成compile_commands.json,但我遇到了同样的问题。我可以获取该文件,但语言服务器仍然无法正常工作。

我已经能够将 clang 与vim-pio 一起使用,所以看起来它没有损坏。我缺少什么。

编辑:顺便说一句,我在 ubuntu 上

c++ liskov-substitution-principle g++ neovim clangd

12
推荐指数
1
解决办法
6985
查看次数

将 Boost 添加到 CMake 项目?

背景

我是 C++ 的新手,我一直在一个又一个头痛,所以如果这非常简单并且我就是那么愚蠢,请原谅我......

我有一个最终应该在 Linux 中编译和运行的项目。不幸的是,在我的 C++ 开发环境出现很多问题(仍未解决)之后,我放弃了在 Linux 中进行开发的尝试,转而使用了 Windows Visual Studio 2017。我的希望是让我的代码在 Windows 中运行,然后,因为 C++ 应该是一个可移植语言,它应该只需要在 Linux 中进行最少的更改即可工作。

一天左右,Visual Studio 似乎在工作。我可以编写代码,点击“编译”,然后就像魔法一样运行。我把几个类放在一起构建了一个有向无环图,使用了哈希表的标准库,然后我尝试创建了一个套接字......

Windows 和 Linux 使用不同的套接字库(<sys/socket.h>vs <winsock.h>),所以我需要某种方法来抽象差异,我更喜欢一个完善的标准。在谷歌上搜索我发现Boost 库似乎符合我的需求......那是一切都变得糟糕的时候。

我的项目设置

因为这个项目将在各种平台和 IDE 上开发(有些人使用 Windows + Visual Studio,有些人使用 Mac + Eclipse,其他人使用 Linux + VIM),所以我选择将它作为一个 CMake 项目。经过几个小时的阅读、学习和研究,似乎 CMake 应该给我我想要的东西(方便且可重复的跨平台构建,几乎没有或没有依赖性问题)

创建一个新项目,pt 1 创建一个新项目,pt 2

我的源代码(直接来自Windows 上Boost 入门指南)如下:

CMakeProject2.cpp

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    using namespace …
Run Code Online (Sandbox Code Playgroud)

c++ boost cmake visual-studio

11
推荐指数
1
解决办法
1万
查看次数

如何查询clang ++的默认包含路径?

如何查询clang/clang ++的默认包含路径?我正在尝试使用自定义构建的clang编译器(支持OpenMP的编译器),但它似乎找不到STL库:

/usr/local/bin/clang++ hello.cpp 
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
     ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

通过使用IDE,反向跟踪#include iostream,最后使用-isystem选项,我在OSX 10.9中编译了简单的helloworld应用程序:

/usr/local/bin/clang++ -isystem /Library/Developer/CommandLineTools/usr/lib/c++/v1 hello.cpp
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

c++ clang

10
推荐指数
2
解决办法
6894
查看次数