GObject Introspectionに入門している
https://github.com/RubyData/workshop-materials/blob/master/gobject-introspection/introduction.md とても丁寧に書いてあって凄い。ありがたい。
少しずつ進めているが、macOS High Sierra 10.13.6環境で詰まったのでメモしておく。
GObject Introspection対応のところで、 gnome.generate_girをした後に再ビルド/インストールしようとしたときに、以下のようにエラーが出て止まった。
% ninja -C ../opencv-glib.build install ninja: Entering directory `../opencv-glib.build' [0/1] Regenerating build files. The Meson build system Version: 0.48.0 Source dir: /Users/kono/project/rdt/gobject_introspection Build dir: /Users/kono/project/rdt/opencv-glib.build Build type: native build Project name: opencv-glib Project version: 1.0.0 Native C compiler: cc (clang 10.0.0 "Apple LLVM version 10.0.0 (clang-1000.11.45.2)") Native C++ compiler: c++ (clang 10.0.0 "Apple LLVM version 10.0.0 (clang-1000.11.45.2)") Build machine cpu family: x86_64 Build machine cpu: x86_64 Dependency opencv found: YES (cached) Dependency gobject-2.0 found: YES (cached) Found pkg-config: /usr/local/bin/pkg-config (0.29.2) opencv-glib/meson.build:25:6: ERROR: gobject-introspection dependency was not found, gir cannot be generated.
Googleで検索したところ、以下がHit。 https://github.com/mesonbuild/meson/issues/2273
同じ現象なのか手元で試したところ...
% pkg-config --cflags gobject-introspection-1.0 [~/project/rdt/gobject_introspection] Package libffi was not found in the pkg-config search path. Perhaps you should add the directory containing `libffi.pc' to the PKG_CONFIG_PATH environment variable Package 'libffi', required by 'gobject-introspection-1.0', not found
どうやら同じで、libffiがpkg-configが見つからないのが原因との事なので、libffiをreinstallしてpathを通す。
% brew reinstall libffi [~/project/rdt/gobject_introspection] ==> Reinstalling libffi ==> Downloading https://homebrew.bintray.com/bottles/libffi-3.2.1.high_sierra.bottle.tar.gz Already downloaded: /Users/kono/Library/Caches/Homebrew/downloads/2b94fcbd05c57dd780b931b4889951260b361d368dd3be9c8a38cb2c6e310fcc--libffi-3.2.1.high_sierra.bottle.tar.gz ==> Pouring libffi-3.2.1.high_sierra.bottle.tar.gz ==> Caveats libffi is keg-only, which means it was not symlinked into /usr/local, because some formulae require a newer version of libffi. For compilers to find libffi you may need to set: export LDFLAGS="-L/usr/local/opt/libffi/lib" For pkg-config to find libffi you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig" ==> Summary 🍺 /usr/local/Cellar/libffi/3.2.1: 16 files, 297.0KB % export PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig"
再度buildを試したところ、成功した。
% ninja -C ../opencv-glib.build install [~/project/rdt/gobject_introspection] ninja: Entering directory `../opencv-glib.build' [0/1] Regenerating build files. The Meson build system WARNING: PKG_CONFIG_PATH has changed between invocations from "" to "/usr/local/opt/libffi/lib/pkgconfig". Version: 0.48.0 Source dir: /Users/kono/project/rdt/gobject_introspection Build dir: /Users/kono/project/rdt/opencv-glib.build Build type: native build Project name: opencv-glib Project version: 1.0.0 Native C compiler: cc (clang 10.0.0 "Apple LLVM version 10.0.0 (clang-1000.11.45.2)") Native C++ compiler: c++ (clang 10.0.0 "Apple LLVM version 10.0.0 (clang-1000.11.45.2)") Build machine cpu family: x86_64 Build machine cpu: x86_64 Dependency opencv found: YES (cached) Dependency gobject-2.0 found: YES (cached) Found pkg-config: /usr/local/bin/pkg-config (0.29.2) Build targets in project: 3 Found ninja-1.8.2 at /usr/local/bin/ninja [1/3] Generating CV-1.0.gir with a custom command. g-ir-scanner: link: cc -o /Users/kono/project/rdt/opencv-glib.build/tmp-introspect49_jUZ/CV-1.0 /Users/kono/project/rdt/opencv-glib.build/tmp-introspect49_jUZ/CV-1.0.o -L. -Wl,-rpath,. -lopencv-glib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core -lgobject-2.0 -lglib-2.0 -lintl -L/Users/kono/project/rdt/opencv-glib.build/opencv-glib -Wl,-rpath,/Users/kono/project/rdt/opencv-glib.build/opencv-glib -L/usr/local/Cellar/opencv/3.4.3/lib -Wl,-rpath,/usr/local/Cellar/opencv/3.4.3/lib -L/usr/local/Cellar/glib/2.58.0_1/lib -Wl,-rpath,/usr/local/Cellar/glib/2.58.0_1/lib -L/usr/local/opt/gettext/lib -Wl,-rpath,/usr/local/opt/gettext/lib -L/usr/local/Cellar/glib/2.58.1/lib -L/usr/local/opt/gettext/lib -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation are out of sync. Falling back to library file for linking. [2/3] Installing files. Installing opencv-glib/libopencv-glib.1.dylib to /tmp/local/lib Installing opencv-glib/CV-1.0.gir to /tmp/local/share/gir-1.0 Installing opencv-glib/CV-1.0.typelib to /tmp/local/lib/girepository-1.0 Installing /Users/kono/project/rdt/gobject_introspection/opencv-glib/matrix.h to /tmp/local/include/opencv-glib