vscode-cpptools icon indicating copy to clipboard operation
vscode-cpptools copied to clipboard

Support --options-file for intelligence of included header

Open Raphael-Hao opened this issue 1 year ago • 2 comments
trafficstars

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.

Raphael-Hao avatar Aug 08 '24 16:08 Raphael-Hao

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.

Colengms avatar Aug 16 '24 00:08 Colengms

@Raphael-Hao Fixed with https://github.com/microsoft/vscode-cpptools/releases/tag/v1.22.0

sean-mcmanus avatar Aug 27 '24 19:08 sean-mcmanus

Thanks

Raphael-Hao avatar Aug 29 '24 04:08 Raphael-Hao