macOSでCMakeを使ってビルドする際にQt 5へのパスを渡す
Qt 5をライブラリとして用いるプログラムをCMakeを使ってビルドする際、例えばQt 5 Widgetsを使う場合はCMakeLists.txtに
find_package(Qt5Widgets REQUIRED)
または
find_package(Qt5 COMPONENTS Widgets REQUIRED)
などと記述することになります*1。
しかしmacOSでは、これに対して単に
cmake [path for the project root]
と実行すると、
CMake Error at CMakeLists.txt:4 (find_package): By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Qt5Widgets", but CMake did not find one. Could not find a package configuration file provided by "Qt5Widgets" with any of the following names: Qt5WidgetsConfig.cmake qt5widgets-config.cmake Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set "Qt5Widgets_DIR" to a directory containing one of the above files. If "Qt5Widgets" provides a separate development package or SDK, be sure it has been installed.
というエラーが表示されてしまいます。これの意味は、CMakeからはQt 5 (ここでは特にQt5Widgets) が発見できなかった、ということです。
これの解決策の一つは、エラー表記にも書いてある通り、CMAKE_PREFIX_PATHを指定することです*2。
例えば公式サイトのパッケージからQt 5 (ver. 5.8) をインストールしてある場合、デフォルトの設定でインストールされていれば次のようにパスを指定することになります。
cmake [path for the project root] -DCMAKE_PREFIX_PATH=~/Qt/5.8/clang_64/
Homebrewを使ってQt 5 (ver. 5.10.0) インストールしてある場合は次のようになります。
cmake [path for the project root] -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt/5.10.0
Homebrewの場合は次のように指定することもできます。
cmake [path for the project root] -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)