Files
DS_Library_Docs/docs/DS_UpdateCMakeList.md
T
2026-06-27 00:39:04 +03:00

4.2 KiB

Скрипт автоматизации сборки DS_UpdateCMakeList

Скрипт на языке PowerShell, предназначенный для автоматизации добавления модулей и драйверов из каталога Library в систему сборки CMake проектов STM32 (генерируемых через STM32CubeMX).

Скрипт полностью исключает необходимость вручную прописывать пути к новым подключаемым датчикам, дисплеям или утилитам внутри файлов CMakeLists.txt.

📌 Принцип работы

  1. Парсинг меток: Скрипт находит внутри cmake/stm32cubemx/CMakeLists.txt маркерные комментарии # Library folder и # Library folder end.
  2. Очистка: Все строки между этими маркерами удаляются, чтобы избежать дублирования данных при повторных запусках.
  3. Сканирование директорий: Скрипт рекурсивно обходит папку Library:
    • Находит все заголовочные файлы (*.h), уникализирует пути к их папкам с помощью хэш-таблицы и заносит их в переменную DS_Include_Dirs.
    • Находит все файлы исходного кода (*.c) и формирует из них список DS_Application_Src.
  4. Запись: Пути автоматически преобразуются из Windows-формата (\) в формат путей CMake (/), привязываются к макросу \${CMAKE_SOURCE_DIR} и дописываются в файл конфигурации.

📁 Требования к структуре проекта

Скрипт жестко завязан на относительное расположение файлов и ожидает следующую структуру папок в вашем проекте:

Имя_Проекта/
├── cmake/
│   └── stm32cubemx/
│       └── CMakeLists.txt     # Целевой файл конфигурации сборки
├── Library/                   # Корневой каталог всех ваших модулей
│   ├── DS_ST7789V/
│   ├── DS_I2CScanner/
│   └── ...
└── tools/
    └── UpdateCMakeList.ps1    # Данный скрипт автоматизации

💻 Интеграция и запуск

1. Подготовка CMakeLists.txt

Перед самым первым запуском скрипта убедитесь, что в вашем файле cmake/stm32cubemx/CMakeLists.txt присутствуют маркерные строки. Добавьте их в конец файла:

# Library folder
# Library folder end

2. Запуск скрипта

Вы можете запустить скрипт через терминал PowerShell:

cd tools/
./UpdateCMakeList.ps1

Примечание: Если операционная система блокирует запуск внешних скриптов, предварительно разрешите выполнение командлетом: Set-ExecutionPolicy RemoteSigned -Scope Process.


📋 Результат работы скрипта

После успешного выполнения скрипта маркерный блок в файле CMakeLists.txt автоматически заполнится актуальными путями:

# Library folder
set(DS_Include_Dirs
     \${CMAKE_SOURCE_DIR}/Library/DS_I2CScanner/Inc
     \${CMAKE_SOURCE_DIR}/Library/DS_ST7789V/Inc
)
target_include_directories(stm32cubemx INTERFACE \${DS_Include_Dirs})

set(DS_Application_Src
     \${CMAKE_SOURCE_DIR}/Library/DS_I2CScanner/Src/DS_I2CScanner.c
     \${CMAKE_SOURCE_DIR}/Library/DS_ST7789V/Src/DS_ST7789V.c
)
target_sources(\${CMAKE_PROJECT_NAME} PRIVATE \${DS_Application_Src})
# Library folder end