microsoft / vscode-cmake-tools

CMake integration in Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=vector-of-bool.cmake-tools
MIT License
1.46k stars 450 forks source link

Incorrect intellisense with cuda files #4110

Open Rickyeeeeee opened 1 week ago

Rickyeeeeee commented 1 week ago

Brief Issue Summary

I had a simple cmake project with a single cuda file, after I configured the project, the intellisense of the file main.cu was somehow changed to c++, so the cuda specific keywords were identified as errors as shown in the image below. Is this a but or is there a way to change the settings?

CMake Tools Diagnostics

{
  "os": "win32",
  "vscodeVersion": "1.94.0",
  "cmtVersion": "1.19.52",
  "configurations": [
    {
      "folder": "c:\\Users\\User\\Dev\\Cuda\\WithCmake",
      "cmakeVersion": "3.27.0",
      "configured": true,
      "generator": "Visual Studio 17 2022",
      "usesPresets": false,
      "compilers": {}
    }
  ],
  "cpptoolsIntegration": {
    "isReady": true,
    "hasCodeModel": true,
    "activeBuildType": "Debug",
    "buildTypesSeen": [
      "Debug",
      "Release",
      "MinSizeRel",
      "RelWithDebInfo"
    ],
    "requests": [
      "file:///c%3A/Users/User/Dev/Cuda/WithCmake/main.cu"
    ],
    "responses": [
      {
        "uri": "file:///c%3A/Users/User/Dev/Cuda/WithCmake/main.cu",
        "configuration": {
          "includePath": [],
          "defines": [],
          "compilerPath": "c:/program files/nvidia gpu computing toolkit/cuda/v12.4/bin/nvcc.exe",
          "compilerArgs": [],
          "compilerFragments": [
            "-D_WINDOWS -Xcompiler=\" /GR /EHsc\" -Xcompiler=\" -Zi -Ob0 -Od /RTC1\" \"--generate-code=arch=compute_52,code=[compute_52,sm_52]\" -Xcompiler=-MDd"
          ]
        }
      }
    ],
    "partialMatches": [],
    "targetCount": 3,
    "executablesCount": 1,
    "librariesCount": 0,
    "targets": [
      {
        "name": "ALL_BUILD",
        "type": "UTILITY"
      },
      {
        "name": "CudaProject",
        "type": "EXECUTABLE"
      },
      {
        "name": "ZERO_CHECK",
        "type": "UTILITY"
      }
    ]
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": false
    }
  ]
}

Debug Log

[main] Building folder: c:/Users/User/Dev/Cuda/WithCmake/build all
[main] Saving open files before configure/build
[build] Starting build
[driver] Start build all
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/Users/User/Dev/Cuda/WithCmake/build --config Debug --target ALL_BUILD -j 22 --
[proc]   with environment: {"ACSetupSvcPort":"23210","ACSvcPort":"17532","ALLUSERSPROFILE":"C:\\ProgramData","APPDATA":"C:\\Users\\User\\AppData\\Roaming","APPLICATIONINSIGHTS_CONFIGURATION_CONTENT":"{}","APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL":"1","CHROME_CRASHPAD_PIPE_NAME":"\\\\.\\pipe\\crashpad_72944_WDZZEACKGMJEZTJK","COMPUTERNAME":"DESKTOP-JLLGC68","CUDA_PATH":"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.4","CUDA_PATH_V11_5":"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5","CUDA_PATH_V11_8":"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.8","CUDA_PATH_V12_4":"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.4","ComSpec":"C:\\Windows\\system32\\cmd.exe","CommonProgramFiles":"C:\\Program Files\\Common Files","CommonProgramFiles(x86)":"C:\\Program Files (x86)\\Common Files","CommonProgramW6432":"C:\\Program Files\\Common Files","DriverData":"C:\\Windows\\System32\\Drivers\\DriverData","EFC_66984":"1","ELECTRON_RUN_AS_NODE":"1","HOMEDRIVE":"C:","HOMEPATH":"\\Users\\User","LOCALAPPDATA":"C:\\Users\\User\\AppData\\Local","LOGONSERVER":"\\\\DESKTOP-JLLGC68","MOZ_PLUGIN_PATH":"C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\plugins\\","NUMBER_OF_PROCESSORS":"20","NVM_HOME":"C:\\Users\\User\\AppData\\Roaming\\nvm","NVM_SYMLINK":"C:\\Program Files\\nodejs","NVTOOLSEXT_PATH":"C:\\Program Files\\NVIDIA Corporation\\NvToolsExt\\","ORIGINAL_XDG_CURRENT_DESKTOP":"undefined","OS":"Windows_NT","OneDrive":"C:\\Users\\User\\OneDrive","OneDriveConsumer":"C:\\Users\\User\\OneDrive","PATHEXT":".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC","PROCESSOR_ARCHITECTURE":"AMD64","PROCESSOR_IDENTIFIER":"Intel64 Family 6 Model 191 Stepping 2, GenuineIntel","PROCESSOR_LEVEL":"6","PROCESSOR_REVISION":"bf02","PSModulePath":"C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules","PUBLIC":"C:\\Users\\Public","Path":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\VC\\VCPackages;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\bin\\Roslyn;C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Common\\VSPerfCollectionTools\\vs2019\\\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Common\\VSPerfCollectionTools\\vs2019\\;C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.8 Tools\\x64\\;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Team Tools\\DiagnosticsHub\\Collector;C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.22621.0\\\\x64;C:\\Program Files (x86)\\Windows Kits\\10\\bin\\\\x64;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\\\MSBuild\\Current\\Bin\\amd64;C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\Tools\\;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.4\\bin;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.4\\libnvvp;C:\\Program Files\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.8\\bin;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.8\\libnvvp;C:\\Program Files\\ImageMagick-7.1.1-Q16-HDRI;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5\\bin;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5\\libnvvp;C:\\tools\\cuda\\bin;C:\\tools\\cuda\\include;C:\\VulkanSDK\\1.3.250.1\\Bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\CMake\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files (x86)\\Pulse Secure\\VC142.CRT\\X64\\;C:\\Program Files (x86)\\Pulse Secure\\VC142.CRT\\X86\\;C:\\Program Files (x86)\\Common Files\\Pulse Secure\\TNC Client Plugin\\;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5\\extras\\CUPTI\\lib64;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5\\extras\\CUPTI\\include;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5\\include;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.5\\bin;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\Hostx64\\x64;C:\\Users\\User\\programs\\COLMAP-3.9.1-windows-cuda;C:\\Users\\User\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\bin;C:\\Program Files\\Java\\jdk-17\\bin;C:\\Program Files\\TortoiseSVN\\bin;C:\\ninja-win;C:\\Program Files (x86)\\Windows Kits\\10\\Windows Performance Toolkit\\;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\Program Files\\NVIDIA Corporation\\Nsight Compute 2024.1.0\\;C:\\Users\\User\\scoop\\shims;C:\\Users\\User\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\User\\AppData\\Local\\GitHubDesktop\\bin;C:\\Users\\User\\programs\\vcpkg;C:\\Panda3D-1.10.9-x64\\python;C:\\Panda3D-1.10.9-x64\\python\\Scripts;C:\\Panda3D-1.10.9-x64\\bin;C:\\Users\\User\\AppData\\Roaming\\npm;C:\\Users\\User\\miniconda3\\Scripts;C:\\Program Files\\Graphviz\\bin;C:\\Users\\User\\programs\\COLMAP-3.9.1-windows-cuda;C:\\Users\\User\\programs\\ffmpeg\\bin;C:\\Users\\User\\programs\\flutter\\bin;C:\\Users\\User\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\bin;C:\\Users\\User\\programs\\ninja-win;;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\bin;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\Ninja;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\VC\\Linux\\bin\\ConnectionManagerExe;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\vcpkg","ProgramData":"C:\\ProgramData","ProgramFiles":"C:\\Program Files","ProgramFiles(x86)":"C:\\Program Files (x86)","ProgramW6432":"C:\\Program Files","RlsSvcPort":"22112","SESSIONNAME":"Console","SystemDrive":"C:","SystemRoot":"C:\\Windows","TEMP":"C:\\Users\\User\\AppData\\Local\\Temp","TMP":"C:\\Users\\User\\AppData\\Local\\Temp","USERDOMAIN":"DESKTOP-JLLGC68","USERDOMAIN_ROAMINGPROFILE":"DESKTOP-JLLGC68","USERNAME":"User","USERPROFILE":"C:\\Users\\User","VK_SDK_PATH":"C:\\VulkanSDK\\1.3.250.1","VSCODE_AMD_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_CODE_CACHE_PATH":"C:\\Users\\User\\AppData\\Roaming\\Code\\CachedData\\d78a74bcdfad14d5d3b1b782f87255d802b57511","VSCODE_CRASH_REPORTER_PROCESS_TYPE":"extensionHost","VSCODE_CWD":"C:\\Program Files\\Microsoft VS Code","VSCODE_DOTNET_INSTALL_TOOL_ORIGINAL_HOME":"undefined","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","VSCODE_IPC_HOOK":"\\\\.\\pipe\\7a324ef7-1.94.0-main-sock","VSCODE_L10N_BUNDLE_LOCATION":"","VSCODE_NLS_CONFIG":"{\"userLocale\":\"en-us\",\"osLocale\":\"zh-tw\",\"resolvedLanguage\":\"en\",\"defaultMessagesFile\":\"C:\\\\Program Files\\\\Microsoft VS Code\\\\resources\\\\app\\\\out\\\\nls.messages.json\",\"locale\":\"en-us\",\"availableLanguages\":{}}","VSCODE_PID":"72944","VULKAN_SDK":"C:\\VulkanSDK\\1.3.250.1","__COMPAT_LAYER":"DetectorsAppHealth","configsetroot":"C:\\Windows\\ConfigSetRoot","windir":"C:\\Windows","DevEnvDir":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\","Framework40Version":"v4.0","FrameworkDir":"C:\\Windows\\Microsoft.NET\\Framework64\\","FrameworkDIR64":"C:\\Windows\\Microsoft.NET\\Framework64\\","FrameworkVersion":"v4.0.30319","FrameworkVersion64":"v4.0.30319","INCLUDE":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\include;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\ATLMFC\\include;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include;C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22621.0\\ucrt;C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22621.0\\\\um;C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22621.0\\\\shared;C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22621.0\\\\winrt;C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22621.0\\\\cppwinrt;C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um","LIB":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\ATLMFC\\lib\\x64;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\lib\\x64;C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\lib\\um\\x64;C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.22621.0\\ucrt\\x64;C:\\Program Files (x86)\\Windows Kits\\10\\\\lib\\10.0.22621.0\\\\um\\x64","LIBPATH":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\ATLMFC\\lib\\x64;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\lib\\x64;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\lib\\x86\\store\\references;C:\\Program Files (x86)\\Windows Kits\\10\\UnionMetadata\\10.0.22621.0;C:\\Program Files (x86)\\Windows Kits\\10\\References\\10.0.22621.0;C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319","NETFXSDKDir":"C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\","UCRTVersion":"10.0.22621.0","UniversalCRTSdkDir":"C:\\Program Files (x86)\\Windows Kits\\10\\","VCIDEInstallDir":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\VC\\","VCINSTALLDIR":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\","VCToolsInstallDir":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\","VCToolsRedistDir":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Redist\\MSVC\\14.40.33807\\","VCToolsVersion":"14.41.34120","VisualStudioVersion":"17.0","VSINSTALLDIR":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\","WindowsLibPath":"C:\\Program Files (x86)\\Windows Kits\\10\\UnionMetadata\\10.0.22621.0;C:\\Program Files (x86)\\Windows Kits\\10\\References\\10.0.22621.0","WindowsSdkBinPath":"C:\\Program Files (x86)\\Windows Kits\\10\\bin\\","WindowsSdkDir":"C:\\Program Files (x86)\\Windows Kits\\10\\","WindowsSDKLibVersion":"10.0.22621.0\\","WindowsSDKVersion":"10.0.22621.0\\","WindowsSDK_ExecutablePath_x64":"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.8 Tools\\x64\\","WindowsSDK_ExecutablePath_x86":"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.8 Tools\\","VS170COMNTOOLS":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\Tools","CC":"cl.exe","CXX":"cl.exe","NINJA_STATUS":"[%s/%t %p :: %e] "}
[build] .NET Framework ��� MSBuild ����𧋦 17.11.2+c078802d4
[build] 
[build]   CudaProject.vcxproj -> C:\Users\User\Dev\Cuda\WithCmake\build\Debug\CudaProject.exe
[driver] Build completed: 00:00:00.764
[cmakefileapi-parser] Read reply folder: c:\Users\User\Dev\Cuda\WithCmake\build\.cmake\api\v1\reply
[cmakefileapi-parser] Found index files: ["cache-v2-8e4ee479200d497c9f66.json","cmakeFiles-v1-71ae1643b2b14e0c08a4.json","codemodel-v2-af20f559dfcdbed57858.json","directory-.-Debug-d0094a50bb2071803777.json","directory-.-MinSizeRel-d0094a50bb2071803777.json","directory-.-Release-d0094a50bb2071803777.json","directory-.-RelWithDebInfo-d0094a50bb2071803777.json","index-2024-10-04T18-34-00-0138.json","target-ALL_BUILD-Debug-97aa7f19c36d57f90da8.json","target-ALL_BUILD-MinSizeRel-97aa7f19c36d57f90da8.json","target-ALL_BUILD-Release-97aa7f19c36d57f90da8.json","target-ALL_BUILD-RelWithDebInfo-97aa7f19c36d57f90da8.json","target-CudaProject-Debug-a4d4343319d0efa438b1.json","target-CudaProject-MinSizeRel-f1d04cc1804d47377c01.json","target-CudaProject-Release-903c95a22b4c9cf35adb.json","target-CudaProject-RelWithDebInfo-cbcc1549a7d72d2b44b3.json","target-ZERO_CHECK-Debug-00b2f02380b0d03fd3fa.json","target-ZERO_CHECK-MinSizeRel-00b2f02380b0d03fd3fa.json","target-ZERO_CHECK-Release-00b2f02380b0d03fd3fa.json","target-ZERO_CHECK-RelWithDebInfo-00b2f02380b0d03fd3fa.json","toolchains-v1-30ff8e40c5ff5c8cee6c.json"]
[expand] expanded ${workspaceFolder}/build
[build] Build finished with exit code 0
[cache] Reading CMake cache file c:/Users/User/Dev/Cuda/WithCmake/build/CMakeCache.txt
[cache] Parsing CMake cache string
[extension] [7498] cmake.build finished (returned 0)

Additional Information

螢幕擷取畫面 2024-10-05 025058
Yingzi1234 commented 5 days ago

Hi @Rickyeeeeee , thank you for your github issue! To better reproduce your question, could you provide us with your cuda file for us? This will be very helpful to us in investigating your problem, please let us know if you have any concerns! Thank you!

Rickyeeeeee commented 5 days ago

CMakeLists.txt main.txt The main.txt is the cuda file.

Yingzi1234 commented 1 day ago

@Rickyeeeeee When using CMake to configure a CUDA project, if you want IntelliSense to correctly recognize .cu files, you can try the following methods:

CMakeLists.txt Setup: Make sure your CMakeLists.txt file correctly sets the CUDA file type. Here’s an example:

cmake

cmake_minimum_required(VERSION 3.8)
project(MyCudaProject LANGUAGES CXX CUDA)

set(CMAKE_CUDA_STANDARD 14)

add_executable(my_cuda_executable main.cu)

Ensure that LANGUAGES CXX CUDA is specified.

VS Code Settings: If you are using Visual Studio Code, make sure to include CUDA-related configurations in the .vscode/c_cpp_properties.jsonfile. Here’s an example:

json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/cuda/include" // CUDA include path
            ],
            "defines": [],
            "compilerPath": "g++",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "gcc-x64",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
        }
    ],
    "version": 4
}

CMake and IntelliSense Compatibility: Ensure that the version of CMake you are using supports CUDA. If the version is older, it may lead to compatibility issues. It is recommended to use version 3.8 or higher.

Restart IDE: After making the above changes, restart your IDE (such as Visual Studio Code or CLion). Sometimes this can resolve issues caused by caching.

CMake Generation: Clean and regenerate your CMake project to ensure all configurations are correctly applied.

Rickyeeeeee commented 1 day ago

I've tried the method you provided, but none of those solved my problem. I already have cuda compiler installed and environment variables set. One thing I noticed is that the intellisense mode was cuda c++ for cuda files when I created a new cuda file, which is correct. But after I ran CMake: Configure, the intellisense for cuda files changed from "cuda c++" to "c++", and I couldn't change the intellisense mode, so I suspect its a problem from the cmake extension.