スポンサーリンク

release,debug用のlibが混在しているときにPowerShellで分ける

VTKをCMakeしたときにうっかり出力先を間違えて同じディレクトリにdebug,releaseが混在してしまったが、幸い名前が違っているので区別可能な場合、PowerShellを使ってそれらを区別する。

なお、この手が使えるのは、vtkのlibファイル名が「機能名-バージョンd.lib」の構造をしているからなので、d.libで終わっていれば確実にデバッグ用だと判別できるから。

1.名前一覧だけほしい場合

デバッグ用

デバッグファイルで末尾がdで終わるファイル名だけの一覧を取得

Get-ChildItem -Path "d:/lib-files" -Recurse -Filter "*d.lib" | Select-Object -ExpandProperty Name
vtkcgns-9.2d.lib
vtkChartsCore-9.2d.lib
vtkCommonColor-9.2d.lib
vtkCommonComputationalGeometry-9.2d.lib
vtkCommonCore-9.2d.lib
vtkCommonDataModel-9.2d.lib
vtkCommonExecutionModel-9.2d.lib
vtkCommonMath-9.2d.lib
vtkCommonMisc-9.2d.lib
....

ただし、これだけなら普通のコマンドプロンプトでもできる。

リリース用

リリース版の拡張子を除くファイル名はdがつかないので、「d.libで終わらない」という指定が必要。これはPowerShellでなければできない。

Get-ChildItem -Path "d:/lib-files" -Recurse | Where-Object { $_.Name -notlike "*d.lib" } | Select-Object -ExpandProperty Name

2.ファイル群を別の場所にコピー

上記の応用で、いっそ別の場所にコピーしてしまえる。今後のことを考えるとそのほうが楽。

デバッグ用

Get-ChildItem -Path "D:/lib-files" -Recurse -Filter "*d.lib" | ForEach-Object { Copy-Item -Path $_.FullName -Destination "d:/lib-debug" }

これで、D:/lib-files/*.d.lib を d:/lib-debug/ にコピーする。

リリース用

Get-ChildItem -Path "D:/lib-files" -Recurse | Where-Object { $_.Name -notlike "*d.lib" } | ForEach-Object { Copy-Item -Path $_.FullName -Destination "D:/lib-release" }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: