I am trying to define a VSCode task in tasks.json that would adapt to the specific architecture where VSCode runs. To do this, I want to get the architecture as uname --m (e.g. "aarch64" or "amd64"). My goal is to interpolate the output of uname into an environment variable like so
"version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "cmake", "args": [ "-DMYLIB_INCLUDE_DIR=$MYLIB/include", "-DMYLIB_LIBRARY=$MYLIB/lib" ], "options": { "env": { "MYLIB": "${workspaceFolder}/mylib/${command:get_arch}" } }, } ] In my case, I will have architecture-specific versions of mylib under mylib/aarch64, mylib/amd64, etc.
My attempt so far as been to define a second get_arch task used in the environment definition of MYLIB, that simply runs uname.
{ "label": "get_arch", "type": "shell", "command": "uname --m" } Of course, this task is not a proper command and so it isn't detected by VSCode and my build task fails. I checked out the documentation on variable substition, but they don't mention if it's possible to substitute a shell command. I guess this would be possible from within an extension, but I want to keep things as simple as possible.