Long story short, documentation for CMake related features in Visual Studio 2017 sucks. It’s scattered among a ton of blog post where most of the code samples are outdated or contain errors. Here is an example launch.vs.json that I’m using for reference:
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "Debug",
"project": "CMakeLists.txt",
"projectTarget": "foo.exe",
"name": "foo.exe",
// currentDir and not cwd like we can read in most examples ...
"currentDir": "${workspaceRoot}",
// this one is pretty straightforward
"args": [ "arg0", "arg1" ],
// env overwrites all the environment variables ...
// separate vars by a null (\u0000) character. You can use existing env vars, see PATH
"env": "TEST_ENV=foo\u0000HELLO=World\u0000PATH=${env.PATH};${workspaceRoot}"
}
]
}