c++ - CMake 工具链文件:嵌入式开发的 `CMAKE_SYSTEM_PROCESSOR` 的适当值
问题描述
在尝试阅读文档并阅读互联网上的其他示例后,我开始为嵌入式 CMake 指定以下变量。
set(CMAKE_SYSTEM_NAME Generic)
#set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSTEM_PROCESSOR cortex-m3)
我已经尝试了arm
和cortex-m3
作为提供给 的值CMAKE_SYSTEM_PROCESSOR
,但是我仍然必须使用以下标志手动识别要编译的体系结构。
add_compile_options(
-mcpu=cortex-m3
-mthumb
)
我原以为这些看似显而易见的标志会被 CMake 抽象出来,并通过指定CMAKE_SYSTEM_PROCESSOR
.
我是不是搞砸了一些明显的事情,还是应该在我的 CMake 工具链文件中使用不同的变量?
解决方案
你的假设是错误的。所有 arm 处理器都是不同的。
举个例子,这里有一些 arm 核心可能具有的硬件选项:
- Thumb-1 指令
- Thumb-2 指令
- 硬件乘法(32/32/32 和 32/32/64)
- 划分
- 数字信号处理器
- 单精度浮点硬件
- 双精度浮点硬件
- 信任区
- 协处理器
- 还有很多...
因此,不存在单个 arm 内核,更不用说 M3 内核了,它因硬件制造商的实现而异。
因此,您必须为您的 arm 核心指定编译器选项。
推荐阅读
- typescript - 使用 Jest 模拟 @apollo/react-hooks useQuery
- selenium - Selenium, groovy, 不能执行任何 click(), sendKeys() 或类似功能
- ionic-framework - 如何在离子电容器中进行产品构建
- python - TypeError:无法腌制“weakref”对象
- c# - ZedGraph 在所有图表中显示范围
- python - 在另一个文件python中定义一个函数中使用的变量
- node.js - 节点的查询字符串:相同查询参数的解析数组的顺序
- wordpress - 我的网站加载非常缓慢,我不知道为什么
- discord.js - 从 client.once('ready' 等 discord.js 中运行 client.setActivity
- c - 重新排序如何消除反向循环携带依赖