STM32 Cmake STM32Workbench проект - PullRequest
       15

STM32 Cmake STM32Workbench проект

0 голосов
/ 14 сентября 2018

Я пытаюсь написать файл CMakeLists.txt для моего проекта STM32.Я использую файлы 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, он генерирует много ошибок "unresolved external "относительно типов 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, но мне интересно, есть ли способ автоматически добавлять эти определения в проект Eclipse из CMake?

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 17 сентября 2018

Проблема была в STM32Workbench. Источники были исключены из сборки и из индексатора.

Чтобы исправить это - щелкните правой кнопкой мыши источник, Свойства, C / C ++ General, Препроцессор Включить пути, снимите отметку Исключить ресурс из сборки . Теперь индексатор может найти все источники, и все «неразрешенные внешние» ошибки исчезли!

...