vscode-cpptools
vscode-cpptools copied to clipboard
Support --options-file for intelligence of included header
Feature Request
CMake is storing the flags of include dirs for compiler like nvcc in a file ended with .rsp. You can see the related cmake configuration here. Then, the exported compile_commands.json will be something like this
{
"directory": "/workspace/project/build",
"command": "/usr/local/cuda/bin/nvcc -forward-unknown-to-host-compiler --options-file CMakeFiles/project.dir/includes_CUDA.rsp -gencode arch=compute_80,code=sm_80 -Xcudafe -O3 -DNDEBUG -std=c++17 -Xcompiler=-fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -x cu -c /home/whcui/project/src/extension.cu -o CMakeFiles/extension.dir/src/extension.cu.o",
"file": "/workspace/project/src/extension.cu",
"output": "CMakeFiles/extension.dir/src/extension.cu.o"
},
However, currently, the lsp cannot recognize this for intelligence of included header.
Hi @Raphael-Hao . Thanks for reporting this. I can repro the issue and have made a fix, which should be available in our next release. (1.22.0)
Some background: To support CUDA IntelliSense, the C/C++ extension needs to 'query' the NVCC compiler to determine the gcc (or cl.exe) command line it will forward to. We then use that gcc/cl command line to configure IntelliSense. It looks like that first request to query NVCC was done using an incorrect working directory. So, any relative paths processed by NVCC (not just forward to GCC) wouldn't be properly located.
@Raphael-Hao Fixed with https://github.com/microsoft/vscode-cpptools/releases/tag/v1.22.0
Thanks