昨天已經成功使用了"install()"命令安裝標頭檔和庫到指定位置了,可是要怎麼刪除呢?
當然可以使用土法煉鋼的方法 -- 手動去安裝路徑刪除檔案,但其實還有更方便的方法來快速地解除安裝。
在昨天的 build 資料夾中,使用$ make install 指令之後會發現產生了名為 install_manifest.txt 的文字檔。
kai@esoc:~/2023_iT_CMake/Day14/範例1在內部安裝/MathFunctions/build$ tree -L 1
.
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── install_manifest.txt <------- 會產生這個安裝規則檔案 ⭐
├── libmysqrt.so -> libmysqrt.so.1
├── libmysqrt.so.1 -> libmysqrt.so.1.0.0
├── libmysqrt.so.1.0.0
└── Makefile
而 install_manifest.txt 的內容就是我們安裝的檔案與其安裝位置。
// install_manifest.txt 內容
/home/kai/2023_iT_CMake/Day14/範例1在內部安裝/MathFunctions/../Main/lib/libmysqrt.so.1.0.0
/home/kai/2023_iT_CMake/Day14/範例1在內部安裝/MathFunctions/../Main/lib/libmysqrt.so.1
/home/kai/2023_iT_CMake/Day14/範例1在內部安裝/MathFunctions/../Main/lib/libmysqrt.so
/home/kai/2023_iT_CMake/Day14/範例1在內部安裝/MathFunctions/../Main/include/mysqrt.h
有了這個安裝路徑檔,就可以使用Liunx的 xargs 搭配 rm 命令讀取安裝路徑檔並依此刪除檔案。
定義:用於產生指令的參數,所以今天會使用xargs讀取install_manifest.txt裡面的內容,當作是 rm 的輸入參數。
$ xargs [options] [command]
定義:刪除檔案
$ rm [options] [/path/to/file1] [/path/to/file2]
1. 先進入昨天的 build 資料夾中
$ cd ~/2023_iT_CMake/Day14/範例1在內部安裝/MathFunctions/build
2. 使用xargs讀取install_manifest.txt內容,並當做 rm 的刪除目標
$ xargs rm < install_manifest.txt
3. 檢查是否正確刪除
kai@esoc:~/2023_iT_CMake/Day14/範例1在內部安裝/Main$ tree -L 2
.
├── build
├── CMakeLists.txt
├── include
├── lib
└── src
└── main.cpp
可以發現昨天安裝的檔案已經被刪除了。
10.6.6 參數代換: xargs
6.2.2 複製、刪除與移動: cp, rm, mv