问题描述
使用 vscode cmake-tools 插件进行 STM 工程构建时出现 “ error: unrecognized command-line option ‘-rdynamic’ ” 错误。但通过命令行 “ cmake …” 构建时,不会出现报错。
- 操作系统:ubuntu
- 文本编辑器:vscode
- 工具链:arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi
- 构建工具:cmake
问题分析
此问题不是 CMakeLists.txt 的配置问题,因为 CMakeLists.txt 中未进行 “-rdynamic” 配置。可见此问题是 cmake-tools 插件的问题。这其实是 cmake-tools 的一个老 bug 了 详见cmake-tools-issue。
参照文中的说法,这个问题产生的原因是 cmake-tools 错误调用了 /usr/share/cmake-3.22/Modules/Platform 中的 cmake 模板,并给编译器赋予了一个 "-rdynamic " 选项。
以下是 Linux-GNU.cmake 中的内容,这里设置了一个 “-rdynamic” 链接选项。
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.tx