C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

vcpkg_chii: vcpkg cmake hyper integration injector 作りましたのメモ

↓つくりました:

vcpkg を使い始めてから、自分の便利用に書いた CMake 用のギミックをモジュール化したものです。 README.md の冒頭で

Let's do more easy, make it more convenient for vcpkg and CMake users.

(にほんご↓)

もっと楽に、便利に、 vcpkg と CMake ユーザーを。

と、いうわけで vcpkg_chii を使うと、 "hyper" (過剰なくらいの) な vcpkg のインテグレーション(統合機能)を CMake へ注入します。具体的には、

  1. cmake .. するだけ(理想的には)でOKになります(†1)
    1. VCPKG_TARGET_TRIPLET環境変数またはシステム標準から自動設定されるようになります
    2. CMAKE_TOOLCHAIN_FILEvcpkg コマンドのパスから自動設定されるようになります
  2. 事前に vcpkg install <library> することを気にしなくてよくなります
    1. 必要なライブラリーは cmake の中で自動的に vcpkg でインストールされるようになります

なので、ちょっと過剰なんですが、実用性としてはとても便利になるのでまあいっかーと思います。注意点として、一応、この機能を使用するプロジェクトを公開する場合は、ソースからビルドするユーザーに対してこんな機能を取り込んでいるよって表示はした方が良いと思います。何も指定しないと試しに CMake したら依存ライブラリーを vcpkg で全自動で落としてビルドし始めて気づいたら cmake するだけでビルドまで終わってしまった…というのは、状況によっては望まないか警戒されると思うので。たいていは、実際問題便利なだけだと…思うけどね。

ちなみに、 cmake .. -DVCPKG_CHII_ENABLE=OFF すれば vcpkg_chii の機能は使わないモードになるので、 vcpkg あるいは vcpkg_chii を使いたくない状況やユーザーにも必要最小限ていどには安心かもしれません。

vcpkg, cmake に興味があれば、とりあえず使ってみて下さい。使い方の例は、 example に簡単な vcpkg から Eigen と google-test を引っ張ってきて使う CMake + vcpkg_chii 採用なミニ・プロジェクトを用意したので、そちらでお試し下さい。

(†1): vcpkg 標準の CMake インテグレーションは cmake .. -DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static とか良くも悪くも cmake するときに長い呪文の詠唱を必要とします。