(1) Решение первой проблемы: добавьте следующий код в ваш самый внешний CMakeLists.txt:
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_SOURCE_DIR}/custom_output.sh")
Глобальное свойство RULE_LAUNCH_COMPILE установлено в пользовательский скрипт запуска с именем custom_output. sh, который необходимо добавить к root дерева исходных текстов CMake:
#!/bin/bash
# shell script invoked with the following arguments
# $(CXX) $(CXX_DEFINES) $(CXX_FLAGS) -o OBJECT_FILE -c SOURCE_FILE
# extract parameters
SOURCE_FILE="${@: -1:1}"
OBJECT_FILE="${@: -3:1}"
# invoke compiler
#"$@" 2>logfile
#while read line; do
#echo ${line#/mnt/d/demo/}
#done <logfile
#"$@" 2> >(sed 's@^/mnt/d/demo/@@')
{ "$@" 2> >(sed 's@^/mnt/d/demo/@@' >&3); } 3>&2
будет выводить сообщения stderr также на stderr и преобразовывать его в относительный путь. Где "/ mnt / d / demo /" есть строка для удаления. Что удалять, зависит от относительного пути исходного кода.
(2) Вы можете использовать следующую команду из gdb для переназначения для решения второй проблемы:
set substitute-path old_path new_path
Вам необходимо добавить следующий код к вам запустить. json
"customLaunchSetupCommands": [
{
"text": "set substitute-path /mnt/d d:/",
"description": "change directory to workspace",
"ignoreFailures": false
}
]
Если вы отлаживаете с помощью Cortex Debug, вы должны добавить следующий код для запуска. json
"postLaunchCommands": ["set substitute-path /mnt/d d:/"]