CMakeとNuGetの相性が怪しい?

C++のビルドツールとして、先月くらいからCMakeを使い始めました。理由はVisual Studio用のソリューションファイル生成機能を使いたかったからです。

このプロジェクトではBoostも使用しているのですが、せっかくなのでNuGetを使ってBoostを導入してみました。手順は以下のページを参照してください。

qiita.com

ただ、私の環境ではCMakeとNuGetを同時に使うと、好ましくない挙動をしています。NuGetを使ってBoostを導入した直後は正常にコンパイルできるのですが、CMakeLists.txtを編集してソリューションファイルの更新処理が走るとBoostがinclude_directoryから外れてしまうみたいで、Boostのヘッダファイルが見つからない旨のコンパイルエラーが出ます。

CMakeLists.txtの編集はそれほど頻繁には行わないので、今のところは対処療法として以下のような手順を踏んでいます。

  1. パッケージマネージャーコンソールを開く
  2. Uninstall-Package boost -ProjectName プロジェクト名
  3. Install-Package boost -ProjectName プロジェクト名

-ProjectNameを指定すれば管理情報だけが消えるのでUninstallもInstallもそれほど時間はかかりませんが、-ProjectNameを指定しない状態だとNuGetで導入したファイルごと消えてしまうので注意してください。

今のところはストレスになるほど困ってはいませんが、できれば根本的に治したいですね。