一、目的
问题描述:在配置工程和编译工程时出现以下提示,并且无法进入调试。
[cpptools] The build configurations generated do not contain the active build configuration. Using "release" for CMAKE_BUILD_TYPE instead of "Release" to ensure that IntelliSense configurations can be found
最近更新了hpm-sdk版本到v1.6.0时,在使用以前的工程进行编译时出现以下问题,具体表现为CMAKE_BUILD_TYPE必须使用小写的release/debug,因为cpp-tools要求用小写的。
cmake-tool默认支持的是Debug,
Release,
RelWithDebInfo,
MinSizeRel这些值,这些默认值是从默认配置中继承过来的。
然后从hpm-sdk的更新日志上来看从v1.4.0版本更新CMAKE_BUILD_TYPE的定义
我们从最新的v1.6.0的hpm-sdk/CMakeLists.txt文件中看到
CMAKE_BUILD_TYPE用来决定编译选项CFLAG是"-O3"还是"-g"。
如果不进行修改,会出现什么具体问题呢?
能正常构建和编译,但是无法进入调试。
二、解决版本
使用CMake Variants解决问题。
在.vscode目录下新增文件cmake-variants.yaml,具体内容如下:
buildType:
default: debug
choices:
debug:
short: Debug
long: Emit debug information
buildType: debug
release:
short: Release
long: Optimize generated code
buildType: release
原有的文件.vscode/settings.json如下:
{
"cmake.buildBeforeRun": true,
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
"cortex-debug.openocdPath": "${env:HPM_OPENOCD_PATH}/src/openocd",
"cortex-debug.variableUseNaturalFormat": false,
"cmake.configureSettings": {
"BOARD":"hpm5301evklite"
}
}
.vscode/launch.json内容如下 :
{
"version": "0.2.0",
"configurations": [
{
"name": "HPM Debug Jlink",
"cwd": "${workspaceRoot}",
"executable": "${command:cmake.launchTargetPath}",
"request": "launch",
"type": "cortex-debug",
"servertype": "jlink",
"gdbPath" : "${env:GNURISCV_TOOLCHAIN_PATH}/bin/riscv32-unknown-elf-gdb",
"device": "HPM5301xEGx",
"interface": "jtag",
"svdFile":"${env:HPM_SDK_BASE}/soc/HPM5301/HPM5301_svd.xml",
"runToEntryPoint": "main",
// Work around for stopping at main on restart
"postRestartCommands": [
"break main",
"continue"
]
}
]
}
经过添加cmake-variants.yaml文件对CMAKE_BUILD_TYPE值进行复写为debug,而不是Debug。
通过以上的操作,问题就可解决。