77 lines
4.2 KiB
Markdown
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
|
|
```
|