我应该如何配置clangd,使其扫描我使用CMake FetchContent下载的库

How should I configure clangd to make it scan the library I download with CMake FetchContent?

本文关键字:扫描 CMake FetchContent 下载 我应该 何配置 配置 clangd      更新时间:2024-09-30

我使用CMake FetchContent下载nlohmann/json。但是我的clangd在下载后没有扫描库。那么我应该如何配置我的clangd呢?

我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.11)
project(ExampleProject LANGUAGES CXX)
include(FetchContent)
FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz)
FetchContent_MakeAvailable(json)
add_executable(example main.cc)
target_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)

和我的代码main.cc:

#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
json object = { { "one", 1 }, { "two", 2 } };
std::cout << object << 'n';
return 0;
}

我的叮当声说:

main.cc|2 col 10-29 error| 'nlohmann/json.hpp' file not found
main.cc|4 col 14-22 error| Use of undeclared identifier 'nlohmann'
main.cc|8 col 5-9 error| Unknown type name 'json'

现在我知道如何解决这个问题了。

使用CMake时,将CMAKE_EXPORT_COMPILE_COMMANDS设置为1,以使CMake生成文件compile_commands.json。Clangd将自动扫描此文件,并跟随它扫描第三方库。