pigpioをcmakeとともに使う


pigpioをcmakeとともに使う

Raspberry Pi の GPIO をとても簡単・便利・お手軽に利用できる pigpio(本家, GitHub ) というライブラリがあります.

このライブラリを cmake から便利に使うためのユーティリティが GitHub で供給されているので紹介するだけの簡単な Tips です.
が,最後の部分はこれでいいのか感があるので誰かいい方法知ってたら教えてください.

ユーティリティ

肝心のモノは前述のGitHubのリポジトリにあるこれです.
https://github.com/joan2937/pigpio/blob/master/util/Findpigpio.cmake

この Findhoge.cmake という形式のファイルは, cmake で find_package から検索できるようにします.
この形式のファイルを CMAKE_MODULE_PATH で指定されたディレクトに置いておくことで,はじめて検索されるようになるようです(参考 : https://cmake.org/cmake/help/v3.5/command/find_package.html).

そのためのファイルが上記の Findpigpio.cmake となります.
ところが,せっかくの便利な util ですが,インストール時に何処かにコピーされるわけでもないようなので,自分で明示的に使う必要があります.

CMakeLists.txt への追加行

まずは, pigpio を find_package します.
pigpio の GitHub を /home/strv/work/ に clone した場合の説明です.

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /home/strv/work/pigpio/util)
find_package(pigpio REQUIRED)

以上をpigpioを使うCMakeLists.txtの最初の方に書いておけばOKです.

もしくは, Findpigpio.cmake ファイルを /usr/share/cmake-*/Modules/ 以下にコピーしても大丈夫ですが, cmake のバージョンが変わるとコピーし直す必要があります.
コピーしないほうかいいような気もするのですが, CMakeLists.txt 中に環境依存なパスを書くのもなぁ,と思いつつ,どっちが良いのかイマイチわかりません.
正しい?良い?方法教えてください…

そもそもutilがMODULEではなくCONFIGとして配られていれば解決する話?

あとは,実際に pigpio (や,pigpiod) を使うコンパイル対象の依存関係に,find_package により利用可能になるパスを使って記述してやればOKです.