Как настроить CMake в Clion для работы с микроконтроллером STM32 и подключения библиотек?

Как настроить Cmake, чтобы он корректно определял зависимости проекта, включая файл main.h, без явного указания прямой ссылки на файл?
Изображение к вопросу
Изображение к вопросу
  • 27 декабря 2023 г. 19:07
Ответы на вопрос 2
Для работы с микроконтроллером STM32 и подключения библиотек в CMake в Clion вы можете использовать следующий подход:

1. Установите STM32CubeIDE, интегрированную среду разработки от STMicroelectronics для микроконтроллеров STM32. Она содержит необходимые заголовочные файлы и библиотеки для работы с STM32.

2. Создайте новый проект в STM32CubeIDE с необходимыми настройками.

3. Откройте созданный проект в Clion. В дереве проекта должны быть видны все файлы проекта, включая файлы заголовков.

4. Создайте новый файл CMakeLists.txt в корневой директории проекта или используйте существующий файл CMakeLists.txt, если он уже есть.

5. В CMakeLists.txt добавьте следующий код:
```
cmake_minimum_required(VERSION 3.16)
project(your_project_name C ASM)

set(CMAKE_C_STANDARD 11)

# Исходные файлы проекта
set(SOURCE_FILES
        src/main.c
        ... # добавьте остальные файлы проекта
        )

# Заголовочные файлы проекта
set(HEADER_FILES
        ... # добавьте все необходимые заголовочные файлы
        )

# Путь к заголовочным файлам STM32
set(CUBE_INC_PATH /path/to/STM32CubeIDE/Repository/STM32Cube_FW_.../Drivers/STM32xxx_HAL_Driver/Inc/)

include_directories(${CUBE_INC_PATH})

# Добавление исполняемого файла
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES})

# Подключение библиотеки STM32 HAL
target_link_libraries(${PROJECT_NAME} PUBLIC
        /path/to/STM32CubeIDE/Repository/STM32Cube_FW.../Drivers/CMSIS/Device/ST/STM32xxx/Include
        /path/to/STM32CubeIDE/Repository/STM32Cube_FW_.../Drivers/STM32xxx_HAL_Driver/Src
        )

# Дополнительные опции компилятора
target_compile_options(${PROJECT_NAME} PRIVATE
        -mthumb
        -march=armv7e-m
        -mfloat-abi=hard
        -mfpu=fpv4-sp-d16
        )
        
```

6. Вместо /path/to/STM32CubeIDE/Repository/STM32Cube_FW_... укажите путь к установленной среде разработки STM32CubeIDE и версию, соответствующую вашему микроконтроллеру.

7. Вместо your_project_name укажите имя вашего проекта.

8. Используйте команду Build -> Build All в Clion для сборки проекта.

Чтобы CMake корректно определял зависимости проекта, включая файл main.h, необходимо:

- Установить правильные пути к заголовочным файлам STM32 в CMakeLists.txt в переменной CUBE_INC_PATH.
- Включить main.h в вашем файле исходного кода, используя директиву #include "main.h".
Попробуйте в include_directories() указывать полные пути. Стандартная переменная cmake ${CMAKE_CURRENT_SOURCE_DIR} содержит путь где лежит текущий файл cmakelists.txt, ее можно использовать для генерации полного пути. 
Обычно, если в проекте используется иерархия каталогов, то в каждом каталоге с исходниками лежит свой собственный cmakelists, а подключается он к нижележащему через add_subdirectory(). Собирайте в каждом каталоге свою цель (статическую библиотеку), потом эти цели указывайте в зависимостях для основной цели.
Похожие вопросы