microsoft / vscode-cmake-tools

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

`${command:python.interpreterPath}` fails when used as a parameter to `cmake.configureSettings` #3648

Open breathe opened 3 months ago

breathe commented 3 months ago

Brief Issue Summary

In my .vscode configuration:

  "cmake.configureSettings": {
    // "PYTHON_EXECUTABLE": "/Users/ncohen/Library/Caches/pypoetry/virtualenvs/zephyrus--PefSXhl-py3.10/bin/python"
    "PYTHON_EXECUTABLE": "${command:python.interpreterPath}"
  }

The first one commented line above works as intended and induces the configured build to detect the desired (manually set) python environment.

I would like to use the second form so that the build automatically uses vscode's current active selected python interpreter. This is supposed to be supported I think -- at least according to [these docs](https://vector-of-bool.github.io/docs/vscode-cmake-tools/settings.html#command-substitution.

However this fails with:

[main] Configuring project: zephyrus 
[expand] Exception while executing command python.interpreterPath for string: -DPYTHON_EXECUTABLE:STRING=${command:python.interpreterPath} 
    TypeError: Cannot use 'in' operator to search for 'workspaceFolder' in /Users/ncohen/software/zephr/zephyrus
    at d._getSelectedInterpreterPath (/Users/ncohen/.vscode/extensions/ms-python.python-2024.2.1/out/client/extension.js:2:447857)
    at /Users/ncohen/.vscode/extensions/ms-python.python-2024.2.1/out/client/extension.js:2:447750
    at l.h (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:150:184839)
    at l.g (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:150:183831)
    at l.executeCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:150:183738)
    at Object.executeCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:160:21654)
    at expandStringHelper (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:56487:50)
    at Object.expandString (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:56375:37)
    at /Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:53919:81
    at Array.map (<anonymous>)
    at CMakeFileApiDriver.generateConfigArgsFromSettings (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:53919:53)
    at async CMakeFileApiDriver.configure (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:53971:34)
    at async /Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:44850:50
    at async CMakeProject.doConfigure (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:45001:24)
[proc] Executing command: /opt/homebrew/bin/cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DPYTHON_EXECUTABLE:STRING=${command:python.interpreterPath} -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -S/Users/ncohen/software/zephr/zephyrus -B/Users/ncohen/software/zephr/zephyrus/build -G Ninja

CMake Tools Diagnostics

No response

Debug Log

No response

Additional Information

No response

gcampbell-msft commented 3 months ago

@breathe Thanks for the issue. To start, those docs are rather out-dated. We have documentation here: https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/cmake-settings.md#command-substitution. We only support expansion of our own commands right now.

I'll mark this as an enhancement request though, thanks!