MacOS Monterey version 12.0.1でcmakeを用いてpcl(Point Cloud Library)のプロジェクトをビルドする際、以下のエラーに遭遇したため備忘録がてら記録しておくことにしました。
CMake Error at /usr/local/opt/qt@5/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".
対処法
エラーログに則って /usr/local/opt/qt@5/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake
を確認してみます。
vim /usr/local/opt/qt@5/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake
すると、最上部に以下のような記述があります。
set(_GL_INCDIRS "/System/Library/Frameworks/OpenGL.framework/Headers" "/System/Library/Frameworks/AGL.framework/Headers"
ここで、一度/System/Library/Frameworks/OpenGL.framework
の中身を確認してみましょう。
%ls /System/Library/Frameworks/OpenGL.framework
Libraries Resources Versions
指定されていたHeadersが無いのが確認できたかと思います。エラーの原因はここです。
では、代わりのHeadersに何を指定すれば良いのかというと、以下の二つを設定する必要があります。
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/AGL.framework/Headers"
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers"
では、/usr/local/opt/qt@5/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake
を書き換えていきましょう。chmodなどで書き込みを許可してからエディタで開いて
set(_GL_INCDIRS "/System/Library/Frameworks/OpenGL.framework/Headers" "/System/Library/Frameworks/AGL.framework/Headers"
を
set(_GL_INCDIRS "/System/Library/Frameworks/OpenGL.framework/Headers" "/System/Library/Frameworks/AGL.framework/Headers" "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/AGL.framework/Headers" "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers")
に書き換えます。
以上です。