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)的错误 "unresolved external"。

在对这个问题进行一些调试之后,我意识到缺少一些 stdint.h header 使用的定义。我用这个命令检查了编译器:

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++ 常规、预处理器包含路径,取消选中 从构建中排除资源。 现在索引器能够找到所有来源并且所有 "unresolved external" 错误都消失了!