CPack

在 twitter 上看到有人推薦 RPiPlay 這個專案,這個開放原始碼軟體主要的用途是當作 AirPlay 伺服器。當這個軟體啟動時,MacOS 裝置跟 iOS 裝置會搜尋到啟動這個軟體的裝置,當選擇鏡射時,就可以將 MacOS 裝置或 iOS 裝置上的畫面投放過去。作者主要是用在 Raspberry Pi 上,但其實在一般的 Linux distribution 上也可以使用。

目前作者沒有打包任何的套件,因此要用,只能自行編譯、安裝。編譯方法蠻簡單的,因為我是用 ubuntu ,所以這邊只介紹 Ubuntu 上怎麼編譯。首先安裝編譯器跟 RPiPlay 會用到的函式庫標頭檔

sudo apt-get install cmake \
    libavahi-compat-libdnssd-dev \
    libplist-dev \
    libssl-dev

接著下載原始碼跟進行編譯

git clone https://github.com/FD-/RPiPlay.git
cd RPiPlay
mkdir build
cd build
cmake ..
make

等編譯完成後,再安裝

sudo make install

等等,講到這邊還沒提到 CPack 啊。

因為我喜歡儘量使用 package 來管理,所以就想到,這可以打包為 debian package 嗎?就找了資料,發現 CMake 專案可以搭配 CPack 來進行打包。

CPack 使用上也很簡單,先安裝 CPack 。

sudo apt-get install cpack

然後修改專案裡的 CMakeLists.txt ,加入以下幾行

SET(CPACK_GENERATOR "DEB")
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "2")
SET(CPACK_PACKAGE_VERSION_PATCH "0")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Yan-ren Tsai")
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libavahi-compat-libdnssd1,libplist3,libssl1.1,libgstreamer1.0-0,libgstreamer-plugins-base1.0-0,gstreamer1.0-libav,gstreamer1.0-vaapi,gstreamer1.0-plugins-bad")
INCLUDE(CPack)

接著重新做一次前面 cmake 的步驟,最後再執行 cpack 即可

# 假設已經在 RPiPlay 目錄下
mkdir build
cd build
cmake ..
make
cpack

執行完,就會在目錄下看到 rpiplay-1.2.0-Linux.deb

使用 sudo dpkg -i rpiplay-1.2.0-Linux.deb 就可以安裝了。

參考資料