pkg-config использует неправильный префикс - PullRequest
0 голосов
/ 24 мая 2018

Я устанавливаю Aruco 3.0.10 из источника с

version="3.0.10"
pkg="aruco-${version}.zip"
url="https://netix.dl.sourceforge.net/project/aruco/3.0.0/${pkg}"
cd `mktemp -d`
wget -O $pkg $url
unzip $pkg
cd aruco-${version}
mkdir build && cd build
cmake ..
make -j
sudo make install

, что дает мне /usr/local/lib/pkgconfig/aruco.pc:

# pkg-config file for the library

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: aruco
Description: ARUCO Library for marker detection
Version:  3.0.10
Requires: opencv >= 2.1.0
Conflicts:
Libs: -L${libdir} -laruco
Cflags: -I${includedir}/aruco -I${includedir}

Однако pkg-config aruco --libs печатает

-L/tmp/tmp.gNQGFAaTtz/aruco-3.0.10/build -laruco /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d /usr/lib/x86_64-linux-gnu/libopencv_contrib.so -lopencv_contrib /usr/lib/x86_64-linux-gnu/libopencv_core.so -lopencv_core /usr/lib/x86_64-linux-gnu/libopencv_features2d.so -lopencv_features2d /usr/lib/x86_64-linux-gnu/libopencv_flann.so -lopencv_flann /usr/lib/x86_64-linux-gnu/libopencv_gpu.so -lopencv_gpu /usr/lib/x86_64-linux-gnu/libopencv_highgui.so -lopencv_highgui /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc /usr/lib/x86_64-linux-gnu/libopencv_legacy.so -lopencv_legacy /usr/lib/x86_64-linux-gnu/libopencv_ml.so -lopencv_ml /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect /usr/lib/x86_64-linux-gnu/libopencv_ocl.so -lopencv_ocl /usr/lib/x86_64-linux-gnu/libopencv_photo.so -lopencv_photo /usr/lib/x86_64-linux-gnu/libopencv_stitching.so -lopencv_stitching /usr/lib/x86_64-linux-gnu/libopencv_superres.so -lopencv_superres /usr/lib/x86_64-linux-gnu/libopencv_ts.so -lopencv_ts /usr/lib/x86_64-linux-gnu/libopencv_video.so -lopencv_video /usr/lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_videostab

Так что, похоже, он использует prefix=/usr/local, а не каталог сборки.Так как это временная папка, это не будет работать долго.Как я могу это исправить?

1 Ответ

0 голосов
/ 24 мая 2018

С pkg-config aruco --debug Я обнаружил, что pkg-config имеет значение

Предпочитая неустановленную версию пакета 'aruco'

, которая использует /usr/local/lib/pkgconfig/aruco-uninstalled.pc:

libdir=/tmp/tmp.37YkQGEdY8/aruco-3.0.10/build
includedir=/tmp/tmp.37YkQGEdY8/aruco-3.0.10/src

Name: aruco
Description: ArUco: a minimal library for Augmented Reality applications based on OpenCv, uninstalled Version.
Version: 3.0.10
Requires: opencv >= 2.1.0
Libs: -L${libdir} -laruco
Cflags: -I${includedir}

Удаление /usr/local/lib/pkgconfig/aruco-uninstalled.pc делает свое дело.
Теперь pkg-config aruco --libs дает

-L/usr/local/lib -laruco /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d /usr/lib/x86_64-linux-gnu/libopencv_contrib.so -lopencv_contrib /usr/lib/x86_64-linux-gnu/libopencv_core.so -lopencv_core /usr/lib/x86_64-linux-gnu/libopencv_features2d.so -lopencv_features2d /usr/lib/x86_64-linux-gnu/libopencv_flann.so -lopencv_flann /usr/lib/x86_64-linux-gnu/libopencv_gpu.so -lopencv_gpu /usr/lib/x86_64-linux-gnu/libopencv_highgui.so -lopencv_highgui /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc /usr/lib/x86_64-linux-gnu/libopencv_legacy.so -lopencv_legacy /usr/lib/x86_64-linux-gnu/libopencv_ml.so -lopencv_ml /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect /usr/lib/x86_64-linux-gnu/libopencv_ocl.so -lopencv_ocl /usr/lib/x86_64-linux-gnu/libopencv_photo.so -lopencv_photo /usr/lib/x86_64-linux-gnu/libopencv_stitching.so -lopencv_stitching /usr/lib/x86_64-linux-gnu/libopencv_superres.so -lopencv_superres /usr/lib/x86_64-linux-gnu/libopencv_ts.so -lopencv_ts /usr/lib/x86_64-linux-gnu/libopencv_video.so -lopencv_video /usr/lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_videostab
...