STM32 Cmake STM32Workbench项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 Cmake STM32Workbench项目相关的知识,希望对你有一定的参考价值。
我正在尝试为我的STM32项目编写CMakeLists.txt文件。我正在使用来自此repo的cmake文件:https://github.com/ObKo/stm32-cmake。从命令行构建工作正常。我是这样做的:
cmake -C "..STM32F207ZCTx_config.cmake" -DCMAKE_BUILD_TYPE=DEBUG -G "Eclipse CDT4 - Unix Makefiles" ..
make.exe -j4
在缓存文件中我设置了一些变量:
set(CMAKE_MAKE_PROGRAM "D:/STM32Workbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.16.0.201807130628/tools/make/make.exe" CACHE STRING "stm32 make")
set(CMAKE_TOOLCHAIN_FILE "stm32-cmake/gcc_stm32.cmake" CACHE STRING "stm32 toolchain")
set(TOOLCHAIN_PREFIX "D:/STM32Workbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.16.0.201807130628/tools/compiler" CACHE STRING "arm toolchain path")
当我将创建的项目导入STM32 Workbench时,它会生成很多关于stdint.h类型的错误“未解决的外部”(例如uint8_t,int32_t)。
经过一些调试这个问题,我意识到缺少stdint.h头部使用的一些定义。我用这个命令检查了编译器:
arm-none-eabi-gcc.exe -dM -E out.h
并获得了arm-none-eabi-gcc中的定义列表:
#define __UINTMAX_TYPE__ long long unsigned int
#define __INT_FAST16_TYPE__ int
#define __INT_FAST64_TYPE__ long long int
#define __INT_FAST32_TYPE__ int
#define __UINT_LEAST16_TYPE__ short unsigned int
#define __SIZE_TYPE__ unsigned int
#define __INT_LEAST16_TYPE__ short int
... and much more
stdint.h需要这些定义来创建正确的uint8_t和其他类型。
我可以手动将这些定义添加到Eclipse项目中,但我想知道是否有方法从CMake自动将这些定义添加到Eclipse项目中?
任何帮助将不胜感激。
答案
问题出在STM32Workbench中。来源被排除在构建和索引器之外。
要修复它 - 右键单击源,属性,C / C ++常规,预处理器包含路径,取消选中从构建中排除资源。现在索引器能够找到所有源,并且所有“未解决的外部”错误都消失了!
以上是关于STM32 Cmake STM32Workbench项目的主要内容,如果未能解决你的问题,请参考以下文章
CLion开发环境的完全解析(QT开发?STM32?顺便速通cmake
CLion 在stm32 环境下使用重定向printf方法,导致float数据无法输出的解决办法