Я пытаюсь написать файл 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?
Любая помощь будет оценена.