繁体   English   中英

STM32 Cmake STM32Workbench项目

[英]STM32 Cmake STM32Workbench project

我正在尝试为STM32项目编写CMakeLists.txt文件。 我正在使用此仓库中的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 ++常规,预处理器包含路径,然后取消选中从构建中排除资源 现在,索引器可以找到所有源,并且所有“无法解决的外部”错误都消失了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM