CMakeの挙動の理解を深めたくて質問しています。
find_packageとprojectは呼ぶタイミングで何故挙動が変わるのでしょうか?
以下のようなことを試して、find_packageを呼ぶタイミングによって挙動が異なることを確認しました。
何故こうなるのか、ドキュメントを読んでも理解できませんでした。
CMakeの挙動を理解するための手助けいただければ幸いです。
projectのあとにfind_packageを呼ぶ
find_packageでQt(Gui フレームワーク)を読み込みたかったので以下のように記載しました。
cmake
1set( CMAKE_PREFIX_PATH "~/Qt/5.15.2/clang_64") 2 3project(proj) 4 5find_package(Qt5 REQUIRED Widgets)
これは問題なく通ります。
projectの前にfind_packageを呼ぶ
cmake
1set( CMAKE_PREFIX_PATH "~/Qt/5.15.2/clang_64") 2 3find_package(Qt5 REQUIRED Widgets) 4 5project(proj) 6
すると以下のようなエラーでした
CMake Error at /xxx/Qt/5.15.2/clang_64/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:9 (message): Failed to find "gl.h" in "/System/Library/Frameworks/OpenGL.framework/Headers;/System/Library/Frameworks/AGL.framework/Headers". Call Stack (most recent call first): /xxx/Qt/5.15.2/clang_64/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake:227 (include) /xxx/Qt/5.15.2/clang_64/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake:93 (find_package) /xxx/Qt/5.15.2/clang_64/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package) CMakeLists.txt:16 (find_package)
また、他のライブラリも試してみましたが、Boostは問題なくて、zlibやOpenCVはまた別なエラーでした。
単に利用するだけなら順序に気をつければ良いのですが、ネット上の情報だとprojectの前にfind_packageしているものもあり、何が変わるのかを知りたいです。
find_packageとprojectは呼ぶタイミングで何故挙動が変わるのでしょうか?
動作環境
- Mac 11.2.3
- CMake 3.20.1
- CLion 2021.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/24 03:37