I seem to have found a solution to the cmake-failing-to-find-standard-C+±headers problem.
Firstly, adding
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
to my CMakeLists.txt
removes the need to specify -DCMAKE_EXPORT_COMPILE_COMMANDS=1
on the cmake
CLI.
Secondly, adding
if(CMAKE_EXPORT_COMPILE_COMMANDS)
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES
${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
endif()
seems to make the cmake
-generated compile_commands.json
give clangd
the required information to find standard headers, in addition to the project specific information.
This solution seems to be working quite well for me.