반응형
PlatformIO libdeps
환경 삭제
1. PlatformIO는 프로젝트 내 여러 빌드 환경([env:XXX]
)에 따라 .pio/libdeps/
경로에 라이브러리를 개별 설치
2. 환경 이름을 바꾸거나 테스트 중 여러 환경을 만들다 보면, 오래된 환경 폴더가 그대로 남아 공간을 차지
예
.pio/
└── libdeps/
├── pico/
├── n1/
├── test/
└── tag2/
🔹 1. 불필요한 libdeps
환경 수동 삭제 (권장)
작업 방법
.pio/libdeps/
디렉토리를 염- 현재
platformio.ini
의[env:xxx]
에 없는 디렉토리를 확인 - 사용하지 않는 환경 폴더를 삭제
예
rm -rf .pio/libdeps/n1
rm -rf .pio/libdeps/tag
rm -rf .pio/libdeps/1
📌 안전하게 삭제 가능: 필요하면 PlatformIO가 다음 빌드 때 필요한 라이브러리를 자동으로 다시 설치함
🔹 2. 전체 libdeps
폴더 정리 후 재설치
전체 초기화를 원한다면
rm -rf .pio/libdeps
그 후 빌드하면 PlatformIO가 필요한 환경만 다시 채움
pio run
🔹 3. platformio.ini
기반 자동 클린 (간접적)
pio run --target clean
.pio/build/
만 정리함libdeps
정리는 포함되지 않음
🔹 4. 전역 캐시 및 오래된 툴 자동 정리
pio system prune --force
- 사용하지 않는 아래 내용을 삭제
- 플랫폼
- 프레임워크
- 패키지
- 툴체인
옵션
--storage
: 빌드 캐시--packages
: 설치된 패키지--projects
: 오래된 프로젝트 정보
🔹 삭제 방법 요약
방법 | 목적 | 명령 또는 조치 |
---|---|---|
📁 수동 삭제 | libdeps 내 불필요한 환경 제거 | rm -rf .pio/libdeps/OLD_ENV_NAME |
🧹 전체 정리 | 모든 환경 라이브러리 초기화 | rm -rf .pio/libdeps |
⚙️ 빌드 클린 | .pio/build/ 만 정리 |
pio run --target clean |
🗑️ 전역 캐시 정리 | 패키지/툴체인/캐시 제거 | pio system prune --force |
🧼 libdeps 폴더를 동시에 정리해주는 스크립트 정리
clean_libdeps.sh
— 오래된 PlatformIO 환경 정리 스크립트
macOS/Linux/WSL용: clean_libdeps.sh
#!/bin/bash
# 현재 platformio.ini에서 사용 중인 환경 목록 추출
used_envs=$(grep "^\[env:" platformio.ini | sed -E 's/^\[env:([^]]+)\]/\1/')
libdeps_dir=".pio/libdeps"
if [ ! -d "$libdeps_dir" ]; then
echo "[INFO] libdeps 디렉토리가 없습니다."
exit 0
fi
echo "[INFO] 사용 중 환경 목록: $used_envs"
for env_path in "$libdeps_dir"/*; do
env_name=$(basename "$env_path")
if ! echo "$used_envs" | grep -qx "$env_name"; then
echo "🗑️ 삭제: $env_name"
rm -rf "$env_path"
else
echo "✅ 유지: $env_name"
fi
done
echo "[DONE] 정리 완료."
📦 사용법
chmod +x clean_libdeps.sh
./clean_libdeps.sh
Windows용 PowerShell 버전: clean_libdeps.ps1
# 현재 디렉토리 기준 platformio.ini에서 환경명 추출
$iniPath = "platformio.ini"
$usedEnvs = Select-String "^\[env:(.+)\]" $iniPath | ForEach-Object {
($_ -replace "^\[env:([^\]]+)\]", '$1').Trim()
}
$libdepsPath = ".pio/libdeps"
if (-Not (Test-Path $libdepsPath)) {
Write-Host "[INFO] libdeps 디렉토리가 없습니다."
exit
}
Write-Host "[INFO] 사용 중 환경 목록: $($usedEnvs -join ', ')"
Get-ChildItem $libdepsPath | ForEach-Object {
$envName = $_.Name
if ($usedEnvs -notcontains $envName) {
Write-Host "🗑️ 삭제: $envName"
Remove-Item $_.FullName -Recurse -Force
} else {
Write-Host "✅ 유지: $envName"
}
}
Write-Host "[DONE] 정리 완료."
📦 사용법
- PowerShell을 관리자 권한이 아닌 일반 권한으로 실행
- 프로젝트 루트에서 실행
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\clean_libdeps.ps1
🔚 정리
OS | 파일 | 실행 명령 |
---|---|---|
Linux/macOS/WSL | clean_libdeps.sh |
./clean_libdeps.sh |
Windows (PowerShell) | clean_libdeps.ps1 |
.\clean_libdeps.ps1 |
libdeps
+ build
폴더를 동시에 정리해주는 스크립트 정리
✅ macOS/Linux/WSL 버전 (clean_platformio.sh
)
#!/bin/bash
used_envs=$(grep "^\[env:" platformio.ini | sed -E 's/^\[env:([^]]+)\]/\1/')
libdeps_dir=".pio/libdeps"
build_dir=".pio/build"
echo "📦 PlatformIO 환경 정리 시작..."
# libdeps 정리
if [ -d "$libdeps_dir" ]; then
for env in "$libdeps_dir"/*; do
env_name=$(basename "$env")
if ! echo "$used_envs" | grep -qx "$env_name"; then
echo "🗑️ libdeps 삭제: $env_name"
rm -rf "$env"
else
echo "✅ libdeps 유지: $env_name"
fi
done
else
echo "ℹ️ libdeps 디렉토리 없음, 생략"
fi
# build 정리
if [ -d "$build_dir" ]; then
echo "🧹 build 디렉토리 정리 중..."
rm -rf "$build_dir"
else
echo "ℹ️ build 디렉토리 없음, 생략"
fi
echo "✅ 정리 완료!"
🔧 실행 방법
chmod +x clean_platformio.sh
./clean_platformio.sh
✅ Windows PowerShell 버전 (clean_platformio.ps1
)
Write-Host "📦 PlatformIO 환경 정리 시작..."
$iniPath = "platformio.ini"
$usedEnvs = Select-String "^\[env:(.+)\]" $iniPath | ForEach-Object {
($_ -replace "^\[env:([^\]]+)\]", '$1').Trim()
}
$libdepsPath = ".pio/libdeps"
$buildPath = ".pio/build"
# libdeps 정리
if (Test-Path $libdepsPath) {
Get-ChildItem $libdepsPath | ForEach-Object {
$envName = $_.Name
if ($usedEnvs -notcontains $envName) {
Write-Host "🗑️ libdeps 삭제: $envName"
Remove-Item $_.FullName -Recurse -Force
} else {
Write-Host "✅ libdeps 유지: $envName"
}
}
} else {
Write-Host "ℹ️ libdeps 디렉토리 없음, 생략"
}
# build 정리
if (Test-Path $buildPath) {
Write-Host "🧹 build 디렉토리 정리 중..."
Remove-Item $buildPath -Recurse -Force
} else {
Write-Host "ℹ️ build 디렉토리 없음, 생략"
}
Write-Host "✅ 정리 완료!"
🔧 실행 방법
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\clean_platformio.ps1
반응형
'임베디드 관련 > PlatformIO, FreeRTOS' 카테고리의 다른 글
[PlatformIO] C++17 코드 빌드시 발생하는 GCC 이슈 정리 (0) | 2025.07.16 |
---|---|
log파일 출력 (0) | 2024.11.29 |
[FreeRTOS] 동기화 (0) | 2024.09.15 |
[FreeRTOS] 이진 세마포어, 뮤텍스 사용법 및 비교 (0) | 2024.09.14 |
[FreeRTOS] ISR 내에서 임계구역 설정 (0) | 2024.09.13 |
댓글