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

77 lines
4.2 KiB
Markdown

# Скрипт автоматизации сборки 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}` и дописываются в файл конфигурации.
---
## 📁 Требования к структуре проекта
Скрипт жестко завязан на относительное расположение файлов и ожидает следующую структуру папок в вашем проекте:
```text
Имя_Проекта/
├── cmake/
│ └── stm32cubemx/
│ └── CMakeLists.txt # Целевой файл конфигурации сборки
├── Library/ # Корневой каталог всех ваших модулей
│ ├── DS_ST7789V/
│ ├── DS_I2CScanner/
│ └── ...
└── tools/
└── UpdateCMakeList.ps1 # Данный скрипт автоматизации
```
---
## 💻 Интеграция и запуск
### 1. Подготовка `CMakeLists.txt`
Перед самым первым запуском скрипта убедитесь, что в вашем файле `cmake/stm32cubemx/CMakeLists.txt` присутствуют маркерные строки. Добавьте их в конец файла:
```cmake
# Library folder
# Library folder end
```
### 2. Запуск скрипта
Вы можете запустить скрипт через терминал PowerShell:
```powershell
cd tools/
./UpdateCMakeList.ps1
```
*Примечание:* Если операционная система блокирует запуск внешних скриптов, предварительно разрешите выполнение командлетом: `Set-ExecutionPolicy RemoteSigned -Scope Process`.
---
## 📋 Результат работы скрипта
После успешного выполнения скрипта маркерный блок в файле `CMakeLists.txt` автоматически заполнится актуальными путями:
```cmake
# 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
```