Opencv: 4.0.0 не создает файл pkgconfig

Созданный на 13 нояб. 2018  ·  40Комментарии  ·  Источник: opencv/opencv

Системная информация (версия)
  • OpenCV => 4.0.0-RC
  • Операционная система / платформа => Ubuntu 18.10
  • Компилятор => gcc 8.2.0 / gcc 6
Подробное описание

Я сделал cmake ... Затем сделайте, а затем сделайте установку
и он не создает файл opencv.pc.

Если я использую те же команды для версии 3.4.3, файл будет создан.

Еще одна вещь
если я свяжусь с pkgconfig, тогда он будет ссылаться на библиотеки без номеров версий.
поэтому установка 4.0.0-rc после 3.4.3 делает pkgconfig непригодным для использования.
было бы неплохо, если бы было несколько файлов opencv.pc, например opencv3.4.pc opencv4.pc

builinstall question (invalid tracker) wontfix

Самый полезный комментарий

У меня была такая же проблема, к счастью, я нашел эту ветку, и я должен согласиться, не все используют cmake.
Для всех, кто наткнулся на эту ветку с той же проблемой, я использовал
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

Ключ здесь: -D OPENCV_GENERATE_PKGCONFIG=YES
Затем продолжайте сборку и установку как обычно. Я проверил, и похоже, что OpenCV устанавливает файл .pc сейчас, поэтому нет необходимости вручную копировать его. Пакет будет установлен с именем «opencv4», поэтому используйте pkg-config --cflags opencv4 .

Все 40 Комментарий

Pkg-config имеет очень ограниченную функциональность, поэтому от этой поддержки отказались.

Вместо этого используйте CMake с find_package(OpenCV) (с выбором нескольких версий, настройкой «на лету» с помощью языка сценариев и т. Д.).

Изменения здесь:

Есть ли способ возобновить поддержку pkg-config ? Файлы .pc, которые в настоящее время создаются, похоже, работают для большинства настроек, и не все используют cmake . Мне кажется, что просто иметь список библиотек, от которых зависит OpenCV, а также информацию о файлах заголовка и .so уже достаточно для большинства случаев использования с pkg-config . Или есть какие-то ограничения по этому поводу?

Опция OPENCV_GENERATE_PKGCONFIG = ON создает файл .pc. Я думаю, он также должен генерироваться по умолчанию в системах * nix, где используется pkg-config. Я тестировал свои двоичные файлы с помощью ldd, и они правильно связаны. Это просто время разработки, когда могут возникнуть конфликты. И я думаю, что такие же проблемы могут возникнуть и с cmake. Можно быть более конкретным, чем просто -llib. можно указать библиотеки точно по файлу .so.

CMakeLists.txt:

OCV_OPTION(OPENCV_GENERATE_PKGCONFIG  "Generate .pc file for pkg-config build tool (deprecated)" ON)

это не работает

@codenoid я считаю, что аргумент для этой опции на самом деле YES

ffmpeg полагается на файлы .pc для зависимости библиотеки opencv, FWIW ...

Также обратите внимание, что «make install» не устанавливает файл .pc, даже если он сгенерирован: |

Также обратите внимание, что «make install» не устанавливает файл .pc, даже если он сгенерирован: |

Вам удалось установить файл .pc?

Да, я просто вручную скопировал это.: |

Во вторник, 15 января 2019 г., в 14:20 Favi0 [email protected] написал:

Также обратите внимание, что команда "make install" не устанавливает файл .pc, даже если он
сгенерировано: |

Вам удалось установить файл .pc?

-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/opencv/opencv/issues/13154#issuecomment-454555451 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AAAw0IVOZFkcmQtjPGnwDjxWhzJoO-dxks5vDkYegaJpZM4Ycby9
.

У меня была такая же проблема, к счастью, я нашел эту ветку, и я должен согласиться, не все используют cmake.
Для всех, кто наткнулся на эту ветку с той же проблемой, я использовал
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

Ключ здесь: -D OPENCV_GENERATE_PKGCONFIG=YES
Затем продолжайте сборку и установку как обычно. Я проверил, и похоже, что OpenCV устанавливает файл .pc сейчас, поэтому нет необходимости вручную копировать его. Пакет будет установлен с именем «opencv4», поэтому используйте pkg-config --cflags opencv4 .

Системная информация (версия)
  • OpenCV => 4.0.0-RC
  • Операционная система / платформа => Ubuntu 18.10
  • Компилятор => gcc 8.2.0 / gcc 6
Подробное описание

Я сделал cmake ... Затем сделайте, а затем сделайте установку
и он не создает файл opencv.pc.

Если я использую те же команды для версии 3.4.3, файл будет создан.

Еще одна вещь
если я свяжусь с pkgconfig, тогда он будет ссылаться на библиотеки без номеров версий.
поэтому установка 4.0.0-rc после 3.4.3 делает pkgconfig непригодным для использования.
было бы неплохо, если бы было несколько файлов opencv.pc, например opencv3.4.pc opencv4.pc

У opencv 4.0.1 тоже есть его вопрос, после установки не создается opencv.pc, даже нет файла pkgconfig

У меня была такая же проблема, к счастью, я нашел эту ветку, и я должен согласиться, не все используют cmake.
Для всех, кто наткнулся на эту ветку с той же проблемой, я использовал
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

Ключ здесь: -D OPENCV_GENERATE_PKGCONFIG=YES
Затем продолжайте сборку и установку как обычно. Я проверил, и похоже, что OpenCV устанавливает файл .pc сейчас, поэтому нет необходимости вручную копировать его. Пакет будет установлен с именем «opencv4», поэтому используйте pkg-config --cflags opencv4 .

Я сделал так, как вы сказали, но все еще не было ни pkgconfig, ни opencv.pc ...

Я добавил флаг "-D OPENCV_GENERATE_PKGCONFIG = YES", запустил cmake, make и обнаружил:

... / unix-install / opencv4.pc

Как упоминалось другими, "make install" не копирует файл в каталог / usr / local.
Я не могу понять, куда должен идти opencv4.pc, просто прочитав справочную страницу pkg-config - какое-то место в / usr / local, но где именно?

Также была та же проблема, когда make install не копировал opencv4.pc , но я использовал zip 4.1.0 со страницы выпуска.

@UberEclectic @ Kevin-Mok Файл opencv4.pc нужно скопировать в / usr / local / lib / pkgconfig. Не забудьте "sudo ldconfig", чтобы убедиться, что недавно установленные библиотеки OpenCV правильно учтены. RC

У меня была такая же проблема, к счастью, я нашел эту ветку, и я должен согласиться, не все используют cmake.
Для всех, кто наткнулся на эту ветку с той же проблемой, я использовал
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

Ключ здесь: -D OPENCV_GENERATE_PKGCONFIG=YES
Затем продолжайте сборку и установку как обычно. Я проверил, и похоже, что OpenCV устанавливает файл .pc сейчас, поэтому нет необходимости вручную копировать его. Пакет будет установлен с именем «opencv4», поэтому используйте pkg-config --cflags opencv4 .

В моем случае он не установил файл .cp.

Да, я просто вручную скопировал это.: |

Во вторник, 15 января 2019 г., в 14:20 Favi0 @ . * > писал: Также как примечание "make install" не устанавливает файл .pc, даже если он сгенерирован: | Вам удалось установить файл .pc? - Вы получили это, потому что прокомментировали. Ответьте на это письмо напрямую, просмотрите его на GitHub < # 13154 (comment) > или отключите поток https://github.com/notifications/unsubscribe-auth/AAAw0IVOZFkcmQtjPGnwDjxWhzJoO-dxks5vDkYegaJpZM4Ycby9 .

Как вы это сделали? В моем случае он даже не создал файл opencv.cp!

Вот как я это делаю FWIW opencv 3.4.5

do_make_and_make_install
cp unix-install/opencv.pc $PKG_CONFIG_PATH

В понедельник, 29 апреля 2019 г., в 10:26, [email protected] написал:

Да, я просто вручную скопировал это.: |
… <# M_9070919798374828714_>
Во вторник, 15 января 2019 г., в 14:20 Favi0 @ . * > писал: Также в качестве примечания
"make install" не устанавливает файл .pc, даже если он сгенерирован: | иметь
вам удалось установить файл .pc? - Вы получаете это, потому что вы
прокомментировал. Ответьте на это письмо напрямую, просмотрите его на GitHub <# 13154
(комментарий)
https://github.com/opencv/opencv/issues/13154#issuecomment-454555451 >,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AAAw0IVOZFkcmQtjPGnwDjxWhzJoO-dxks5vDkYegaJpZM4Ycby9
.

Как ты это сделал?

-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/opencv/opencv/issues/13154#issuecomment-487647192 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AAADBUGSALBP6IJAXOVIOLTPS4OSLANCNFSM4GDRXS6Q
.

полезно, если не используется CMake в проектах, использующих OpenCV

не говорите, что это устарело [1] пожалуйста

[1]
https://github.com/opencv/opencv/commit/73f65b1ccf220572f8cbad6fe06d19f313892db5

В версии 4.1.0 и ниже не создается файл ПК
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

С 4.1.0 заработал. Я обнаружил ошибку в предоставленной ранее команде. Нужно использовать ON вместо YES.

OPENCV_GENERATE_PKGCONFIG=ON

pkg-config --cflags opencv4
-I/usr/include/opencv4/opencv -I/usr/include/opencv4
$ pkg-config --libs opencv4
-lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

полезно, если не используется CMake в проектах, использующих OpenCV

не говорите, что это устарело [1] пожалуйста

[1]
[73f65b1] (https://github.com/opencv/opencv/commit/73f65b1ccf220572f8cbad6fe06d19f313892db5)

Я меняю свою точку зрения, может быть, ее можно назвать устаревшей ...

Итак, опция -D OPENCV_GENERATE_PKGCONFIG = ON в cmake теперь устарела? Как же тогда получить файлы pkgconfig и opencv.pc?

Итак, опция -D OPENCV_GENERATE_PKGCONFIG = ON в cmake теперь устарела? Как же тогда получить файлы pkgconfig и opencv.pc?

если вы не добавили явно, OPENCV_GENERATE_PKGCONFIG = ON не создается.

Я добавил в свой% cmake

-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_PC_FILE_NAME=opencv.pc \

Для установки файлов cmake в папку cmake по умолчанию я добавляю:

-DOPENCV_CONFIG_INSTALL_PATH=%{_libdir}/cmake/OpenCV \

Пожалуйста, не заставляйте всех использовать CMAKE. Многие проекты не используют CMAKE и по уважительным причинам.

Итак, я установил версию opencv из репозитория AUR. Эта установка не сгенерировала opencv.pc. Один из моих проектов (на C) использует pkg-config opencv --libs в качестве одной из опций make. Есть ли способ сгенерировать этот opencv.pc без использования команд из этого репозитория? Я хочу иметь две версии opencv, одну под управлением Pacman и ручную установку, установленные на моей арке.

Для установки файлов cmake в папку cmake по умолчанию я добавляю:

-DOPENCV_CONFIG_INSTALL_PATH=%{_libdir}/cmake/OpenCV \

У меня был отчет об ошибке https://bugzilla.redhat.com/show_bug.cgi?id=1721876
Итак, теперь я использую относительный PATH для OPENCV_CONFIG_INSTALL_PATH

-DOPENCV_CONFIG_INSTALL_PATH=%{_lib}/cmake/OpenCV \

или же

-DOPENCV_CONFIG_INSTALL_PATH=lib64/cmake/OpenCV \

@ sergiomb2 Упомянутый тикет не касается файла pkg-config (это проблема).
Есть свежие исправления / обсуждения генерации конфигурации CMake и абсолютных / относительных путей: # 14925 # 14963

С 4.1.0 заработал. Я обнаружил ошибку в предоставленной ранее команде. Нужно использовать ON вместо YES.

OPENCV_GENERATE_PKGCONFIG=ON
....

Это правильно, я тестировал оба. Когда используется ON, opencv4 сгенерирует файл opencv4.pc в папку ... / pkconfig.

В качестве побочного примечания, в книгах для opencv4 есть ошибки или устаревший код. Я несколько дней пытался заставить пример работать. Наконец я получил это, и он работает:

cd ~ / opencv / образцы / cpp
g ++ opencv_version.cpp $ (pkg-config --cflags --libs opencv4) -o show_version

Всем привет.

Мне не нравится ставить -1 на уже принятое (но предвзятое) предложение, но здесь более широкое объяснение:

было бы неплохо, если бы было несколько файлов opencv.pc, например opencv3.4.pc opencv4.pc

Если одно приложение совместимо с opencv2 -> opencv5 (если когда-либо в будущем master будет 5), то достаточно просто полагаться на тот же opencv.pc (при использовании pkgconf), а не время от времени адаптироваться.

Я хочу продолжать использовать opencv.pc по умолчанию, чтобы избежать необходимости адаптации приложений при каждом изменении версии opencv.pc. Потому что для сопровождающего пакета дистрибутива будет проще, если все будут использовать один и тот же opencv.pc.
Вы можете увидеть # 16902 для других комментариев по теме.

Я пробую OPENCV_GENERATE_PKGCONFIG = ON. но не работает.
Я пробую OPENCV_GENERATE_PKGCONFIG = YES. но не работает.
Я пробую -DOPENCV_GENERATE_PKGCONFIG = ON. но не работает.
opencv 4.3.0
Я устанавливаю opencv на свой локальный путь. например / data / home / xxx / opencv. Я использую make и make install. или сделайте make install. оба не работают.
Я сдаюсь. Я добавлю lib и включу файл в makefile.

в опции cmake нужно поставить -DOPENCV_GENERATE_PKGCONFIG = ON
затем после выполнения команды make вы найдете в папке сборки папку с именем you os (в моем случае «unix») внутри файла .pc

@Usernamezhx

Вы ведь не забыли опцию "-D"?

У меня всегда был пробел после -D, как в документах, например:
-D OPENCV_GENERATE_PKGCONFIG = ВКЛ.

но запись без пробела, по-видимому, тоже работает:
-DOPENCV_GENERATE_PKGCONFIG = ВКЛ.

Ниже приводится цитата из моего сценария установки, а часть cmake полностью работает для opencv 4.2.0. Эта цитата ни в коем случае не является полным сценарием установки. У меня до этого было установлено множество библиотек отдельно, поэтому вам нужно создать собственный скрипт для своих целей. Не забывайте ldconfig в конце, так как он завершает некоторые установки в Linux. Вам также может потребоваться отредактировать пути в ~ / .bashrc. Сначала переместите загруженный материал в папку opencv, затем и т.д.

MV OpenCV-4.2.0 OpenCV
cd opencv
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE = RELEASE -D WITH_QT = ON -D OPENCV_GENERATE_PKGCONFIG = ON -D CMAKE_INSTALL_PREFIX = / usr / local -D WITH_V4L = ON -D WITH_EIGEN = ON -D WITH_OPENGL = ON -D WITH_OPENGL = ON -D WITH_OPENGL = ON -D WITH_OPENGL = ON -D WITH_OPENGL = ON -D WITH_OPENGL = ON -D WITH_OPENGL = ON D WITH_XINE = ON -D BUILD_EXAMPLES = ON -D BUILD_PERF_TESTS = OFF -D ENABLE_PRECOMPILED_HEADERS = OFF .. -D INSTALL_C_EXAMPLES = ON -D BUILD_EXAMPLES = ON -D BUILD_opencv_python3 = ON -D BUILD_opencv_python3 = ON -D BUILD_opencv_python3 = ON -D BUILD_opencv_python3 = ON -D .

make -j6
sudo make install
sudo ldconfig

Проверьте, где находится ваш opencv4.pc:

Сначала двигайтесь полностью вверх, дважды из дома с
CD ..
CD ..

Потом:

sudo find -name opencv4.pc

Вы должны найти несколько pkgfolders с этим:

sudo find -name pkgconfig

Надеюсь это поможет.

PS. Копия cmake в моем предыдущем посте должна быть одной непрерывной строкой без разрывов строк. Просто добавьте правильные разрывы строк, если хотите вручную разбить его на несколько строк.
Если вы считаете, что opencv правильно установлен, вы можете протестировать его, сначала перейдите в папку cpp samples, например:

cd ~ / opencv / образцы / cpp

Скомпилируйте opencv_version.cpp в файл запуска с именем show_my_version

g ++ opencv_version.cpp $ (pkg-config --cflags --libs opencv4) -o show_my_version

и запустите его: ./show_my_version

@dalilander да. оно работает. так потрясающе. спасибо за любезный ответ.

Я столкнулся с аналогичной проблемой после установки OpenCV 4.2.0 и не смог найти способ скомпилировать программу на C ++ с использованием CMakeLists.txt. У меня были установлены и другие версии OpenCV, поэтому мне пришлось указать конкретный путь к компилятору. Конфигурации pkg-config были установлены и могли идентифицировать opencv4 благодаря описанному выше решению для сборки OpenCV с _ -D OPENCV_GENERATE_PKGCONFIG=YES _> Хотя пришлось экспортировать путь к файлу pkg-config .pc в переменную среды следующим образом:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/ubuntu/opencv/opencv4/lib/pkgconfig

Обычный способ компиляции с OpenCV до версии 3.4.4 был cmake . -DOpenCV_DIR=~/opencv/opencv4/share/ (или / usr / local / share / OpenCV), однако он не работал с 4.2.0. Наконец, заметил, что 4.2.0 не помещает файлы Config.cmake и Config-version.cmake в каталог share /. Вместо этого они были помещены в отдельный каталог / lib / cmake / opencv4 /. Теперь я могу компилировать все программы с помощью cmake. -DOpenCV_DIR=(yopur opencv installation location)/opencv4/lib/cmake/opencv4 и все работает отлично!

Я также добавил find_package( OpenCV 4.2.0 REQUIRED ) в CMakeLists.txt. Не уверен, что это лучший способ, но надеюсь, что это поможет другим!

Привет,
Я попробовал приведенные выше предложения (спасибо @dalilander и @hardikparwana), но ни одно из них не сработало. установка такая: Raspberry PI 4 ARMv7l, Centos 7.
OpenCV - последняя версия, доступная в репозитории GitHub, v.4.4 https://github.com/opencv/opencv/

Я скомпилировал openCV, как показано в приведенной ниже команде. Я также пробовал ... = ON как в ... -D OPENCV_GENERATE_PKGCONFIG = YES

make3 -D CMAKE_BUILD_TYPE = RELEASE -D CMAKE_INSTALL_PREFIX = / usr / local -D INSTALL_C_EXAMPLES = ON -D INSTALL_PYTHON_EXAMPLES = ON -D OPENCV_GENERATE_PKGCONFIG_D OPENCV_GENERATE_PKGCONFIG = YES -DOpenCONFIG = YES -DOpenCONFIG = YES -D OPENCONFIG = YES -DOpenCONFIG = YES -DOpenCONFIG = YES -DOpenCONFIG = YES -DOpenCONFIG = YES -DOpenCONFIG = YES -DOpenCONFIG = YES -DOpenCONFIG / ..

Затем я выполнил шаги установки,

make -j4 (в моем случае 4)
sudo make install
sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc / usr / share / pkgconfig /
sudo ldconfig
pkg-config --modversion opencv4

затем он возвращает ошибку ниже

@Rasp build] $ pkg-config --modversion opencv4
Пакет opencv4 не найден в пути поиска pkg-config.
Возможно, вам следует добавить каталог, содержащий `opencv4.pc '
в переменную окружения PKG_CONFIG_PATH
Пакет opencv4 не найден

Должен ли я добавить opencv4.pc вручную? Как мне это добавить?

С наилучшими пожеланиями,
я

@iuri Я думаю, вы не экспортировали PKG_CONFIG_PATH, как я предлагал в своем решении. Делать это нужно вручную. Думаю, ваша проблема будет решена, как только вы это сделаете.
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/ubuntu/opencv/opencv4/lib/pkgconfig

Просто замените путь своим.

Точно!
и почему я не экспортировал это?
Потому что нет такого файла с именем Config.cmake ни Config-version.cmake в каталоге share / или / lib. Их даже нет во всей файловой системе. Кстати, я заметил, что ваши примеры для Ubuntu, моя ОС - Centos 7, Arch - armV7L
Я запустил "найти" в командной строке, и в каталоге openCV были только образцы.

[ @Rasp ~] $ sudo find / -iname "Config.cmake"
/usr/local/src/opencv_build/opencv/samples/hal/c_hal/config.cmake
/usr/local/src/opencv_build/opencv/samples/hal/slow_hal/config.cmake
[ @Rasp ~] $ sudo find / -iname "Config-version.cmake"
[ @Rasp ~] $

Стоит ли устанавливать pkg_config?
https://stackoverflow.com/questions/28997618/installing-pkg-config-files-to-proper-path-on-centos-with-automake

С наилучшими пожеланиями,
я

Всем привет,
Я нашел ответ!
Собственно, проблему я нашел. Я заметил, что символическая ссылка была назначена в неправильном направлении

sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc / usr / share / pkgconfig /

Нет / lib64 /. Итак, я удалил эту символическую ссылку, поискал любую ссылку на opencv.pc в файловой системе, нашел «usr / local / lib / pkgconfig / opencv.pc», затем создал новую символическую ссылку,

ln -s /usr/local/lib/pkgconfig/opencv.pc / usr / share / pkgconfig /

"pkg-config --modversion opencv" теперь возвращает 3.4.11.

Кажется, у меня есть предыдущая версия openCV, которую я установил из системы диспетчера пакетов YUM.

Я собираюсь очистить эту версию и начать с нуля новую версию openCV из источника 4.2.

С наилучшими пожеланиями,
я

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

opencv-pushbot picture opencv-pushbot  ·  3Комментарии

shravankumar147 picture shravankumar147  ·  3Комментарии

willyd picture willyd  ·  3Комментарии

dpo picture dpo  ·  3Комментарии

opencv-pushbot picture opencv-pushbot  ·  3Комментарии