You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The problem with this configuration is that the .vscode/launch.json is (kinda) broken because it contains the configuration for only one of the targets.
The problem is that vscode-debug.cmake for every configured target, it replaces the entire contents of that file, overwriting any previously saved configuration.
What it should do instead is to overwrite only the entries of the "configurations" JSON array object that have the same name of the selected targets.
This is obviously much more difficult to implement, given that (IIRC) there is no JSON support to CMake and that it's not a trivial operation. One of the edge cases I can think of is removing a target, that would leave the configuration for that target untouched, which means that the user would have to delete it manually.
There is also the fact that this type of project structure can probably be changed for a better one or that I've missed something that could make this work without any changes.
The text was updated successfully, but these errors were encountered:
Read the launch.json.part contents into a CMake variable
Append the contents to a environment variable LAUNCH_JSON
Write the LAUNCH_JSON to the file
It's a bit ugly b/c the launch.json gets generated and overwritten once for each target, but it works
# Create launch.json for a target and append it to the global launch.jsonfunction(launch_json PROJ_NAME)
set(LAUNCH_JSON $ENV{LAUNCH_JSON})
configure_file(${TEMPLATE_DIR}/vscode-pyocd.in ${CMAKE_BINARY_DIR}/launch.json.part @ONLY)
file(READ${CMAKE_BINARY_DIR}/launch.json.part LAUNCH_JSON_PART)
string(APPEND LAUNCH_JSON "${LAUNCH_JSON_PART}")
set(ENV{LAUNCH_JSON} "${LAUNCH_JSON}")
configure_file("${TEMPLATE_DIR}/launch.json.in""${VSCODE_DIR}/launch.json" @ONLY)
endfunction()
I have a project that is structured in this way:
Where the
CMakeLists.txt
file contains something like this:The problem with this configuration is that the
.vscode/launch.json
is (kinda) broken because it contains the configuration for only one of the targets.The problem is that
vscode-debug.cmake
for every configured target, it replaces the entire contents of that file, overwriting any previously saved configuration.What it should do instead is to overwrite only the entries of the
"configurations"
JSON array object that have the same name of the selected targets.This is obviously much more difficult to implement, given that (IIRC) there is no JSON support to CMake and that it's not a trivial operation. One of the edge cases I can think of is removing a target, that would leave the configuration for that target untouched, which means that the user would have to delete it manually.
There is also the fact that this type of project structure can probably be changed for a better one or that I've missed something that could make this work without any changes.
The text was updated successfully, but these errors were encountered: