首页 > 解决方案 > CMake 工具链文件:嵌入式开发的 `CMAKE_SYSTEM_PROCESSOR` 的适当值

问题描述

在尝试阅读文档并阅读互联网上的其他示例后,我开始为嵌入式 CMake 指定以下变量。

set(CMAKE_SYSTEM_NAME Generic)
#set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSTEM_PROCESSOR cortex-m3)

我已经尝试了armcortex-m3作为提供给 的值CMAKE_SYSTEM_PROCESSOR,但是我仍然必须使用以下标志手动识别要编译的体系结构。

add_compile_options(
    -mcpu=cortex-m3
    -mthumb
)

我原以为这些看似显而易见的标志会被 CMake 抽象出来,并通过指定CMAKE_SYSTEM_PROCESSOR.

我是不是搞砸了一些明显的事情,还是应该在我的 CMake 工具链文件中使用不同的变量?

标签: c++cmakearmembeddedtoolchain

解决方案


你的假设是错误的。所有 arm 处理器都是不同的。

举个例子,这里有一些 arm 核心可能具有的硬件选项:

  • Thumb-1 指令
  • Thumb-2 指令
  • 硬件乘法(32/32/32 和 32/32/64)
  • 划分
  • 数字信号处理器
  • 单精度浮点硬件
  • 双精度浮点硬件
  • 信任区
  • 协处理器
  • 还有很多...

因此,不存在单个 arm 内核,更不用说 M3 内核了,它因硬件制造商的实现而异。

因此,您必须为您的 arm 核心指定编译器选项。


推荐阅读