Первая итерация
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# Скрипт автоматизации сборки 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
|
||||
```
|
||||
Reference in New Issue
Block a user