Opencv: 4.0.0はpkgconfigファイルを生成しません

作成日 2018年11月13日  ·  40コメント  ·  ソース: opencv/opencv

システム情報(バージョン)
  • OpenCV => 4.0.0-rc
  • オペレーティングシステム/プラットフォーム=> Ubuntu 18.10
  • コンパイラ=> gcc 8.2.0 / gcc 6
詳細な説明

私はcmakeをしました...それから作ってからインストールします
そしてそれはopencv.pcファイルを生成しません。

バージョン3.4.3で同じコマンドを使用すると、ファイルが作成されます。

別物
pkgconfigでリンクすると、バージョン番号のないライブラリにリンクします。
したがって、3.4.3の後に4.0.0-rcをインストールすると、pkgconfigが使用できなくなります。
opencv3.4.pcopencv4.pcのような複数のopencv.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の機能は非常に限られているため、このサポートは廃止されました。

代わりにfind_package(OpenCV) CMakeを使用してください(複数のバージョンの選択、スクリプト言語による「オンザフライ」構成など)。

変更点は次のとおりです。

pkg-configサポートを再導入する方法はありますか? 現在生成されている.pcファイルはほとんどの設定で機能するようで、すべての人がcmakeを使用しているわけではありません。 pkg-configほとんどのユースケースでは、OpenCVが依存するライブラリのリストと、ヘッダーファイルと.soファイルが存在する情報だけで十分であるように思われます。 それとも、この点で何か制限はありますか?

オプションOPENCV_GENERATE_PKGCONFIG = ONは、「。pc」ファイルを生成します。 また、pkg-configが使用されている* nixシステムではデフォルトで生成されるべきだと思います。 バイナリファイルをlddでテストしたところ、正しくリンクされています。 競合が発生する可能性があるのは、開発時です。 そして、cmakeでも同じ問題が発生する可能性があると思います。 -llibだけではなく、より具体的にすることもできます。 .soファイルでlibsを正確に指定することが可能です。

CMakeLists.txt:

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

それは機能しません

@codenoidそのオプションの引数は実際にはYESだと思います

ffmpegはopencvライブラリの依存関係を.pcファイルに依存しています。FWIW...

また、「make install」は、生成された場合でも.pcファイルをインストールしません:|

また、「make install」は、生成された場合でも.pcファイルをインストールしません:|

.pcファイルをインストールできましたか?

ええ、手動でコピーしました。:|

火の上、2019年1月15日2:20 PM 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でリンクすると、バージョン番号のないライブラリにリンクします。
したがって、3.4.3の後に4.0.0-rcをインストールすると、pkgconfigが使用できなくなります。
opencv3.4.pcopencv4.pcのような複数のopencv.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もありませんでした...

「-DOPENCV_GENERATE_PKGCONFIG = YES」フラグを追加し、cmake、makeを実行して、次のものを見つけました。

... / unix-install / opencv4.pc

他の人が述べたように、「makeinstall」は/ usr / localの下のどこにもファイルをコピーしませんでした。
pkg-configのmanページ(/ usr / localの下のどこか)を読むだけでは、opencv4.pcがどこに行くべきかを知ることはできませんが、正確にはどこにありますか?

make installopencv4.pcコピーしなかったという同じ問題もありましたが、リリースページから4.1.0zipを使用していました。

@UberEclectic @ Kevin-Mokopencv4.pcファイルを/ usr / local / lib / pkgconfigにコピーする必要があります。 最近インストールされたOpenCVライブラリが正しく考慮されていることを確認するために、「sudoldconfig」を忘れないでください。 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ファイルはインストールされませんでした。

ええ、手動でコピーしました。:|

2019年1月15日火曜日午後2時20分Favi0 @* >書き込み:メモとして、「make install」は、生成された場合でも.pcファイルをインストールしません:| .pcファイルをインストールできましたか? —コメントしたため、これを受け取っています。 このメールに直接返信するか、GitHub < #13154(コメント) >で表示するか、スレッドhttps://github.com/notifications/unsubscribe-auth/AAAw0IVOZFkcmQtjPGnwDjxWhzJoO-dxks5vDkYegaJpZM4Ycby9をミュートし

どのようにそれをしましたか?、私の場合、それはopencv.cpファイルさえ作成していません!

これが私がそれを行う方法ですFWIWopencv 3.4.5

do_make_and_make_install
cp unix-install/opencv.pc $PKG_CONFIG_PATH

2019年4月29日月曜日午前10時26分に[email protected]は次のように書いています。

ええ、手動でコピーしました。:|
…<#m_9070919798374828714_>
2019年1月15日火曜日午後2時20分Favi0 @* >書き込み:メモとしても
「makeinstall」は、生成された場合でも.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

OpenCVを使用するプロジェクトでCMakeを使用しない場合に役立ちます

非推奨とは言わないでください[1]お願いします

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

4.1.0では、以下はPCファイルを生成しません
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

4.1.0で、機能するようになりました。 以前に提供されたコマンドに間違いを見つけました。 YESの代わりにONを使用する必要があります。

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

OpenCVを使用するプロジェクトでCMakeを使用しない場合に役立ちます

非推奨とは言わないでください[1]お願いします

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

私は自分の見方を変えます多分非推奨と呼ぶことができます...

それで、cmakeの-D OPENCV_GENERATE_PKGCONFIG = ONオプションは現在非推奨ですか? では、どうすればpkgconfigファイルとopencv.pcファイルを入手できますか?

それで、cmakeの-D OPENCV_GENERATE_PKGCONFIG = ONオプションは現在非推奨ですか? では、どうすれば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は生成されませんでした。 私のプロジェクトの1つ(C)は、makeオプションの1つとして「pkg-configopencv--libs」を使用しています。 このリポジトリからcmakingせずにこのopencv.pcを生成する方法はありますか? 2つのバージョンのopencvが必要です。1つはPacmanによって管理され、手動インストールは私のアーチにインストールされます。

cmakeファイルの場合、デフォルトのcmakeフォルダーにインストールします。

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

バグレポートがありましたhttps://bugzilla.redhat.com/show_bug.cgi?id=1721876
だから今私は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で、機能するようになりました。 以前に提供されたコマンドに間違いを見つけました。 YESの代わりにONを使用する必要があります。

OPENCV_GENERATE_PKGCONFIG=ON
...。

これは正しいです私は両方をテストしました。 ONを使用すると、opencv4はopencv4.pcファイルを... / pkconfigフォルダーに生成します。

補足として、opencv4の本には間違いや非推奨のコードがあります。 私は例を機能させるために何日も苦労しました。 最後に私はこれを手に入れました、そしてそれは働きます:

cd〜 / opencv / samples / cpp
g ++ opencv_version.cpp $(pkg-config --cflags --libs opencv4)-o show_version

こんにちは。

すでに受け入れられている(しかし偏った)提案に-1を付けるのは好きではありませんが、ここではより広い説明をします。

opencv3.4.pcopencv4.pcのような複数のopencv.pcファイルがあればいいのですが

1つのアプリケーションがopencv2-> opencv5と互換性がある場合(将来のマスターが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とmakeinstallを使用しています。 またはmakeinstallを作成します。 どちらも機能しません。
あきらめる。 libを追加し、ファイルをmakefileにインクルードします。

cmakeオプションでは、-DOPENCV_GENERATE_PKGCONFIG = ONを入力する必要があります
次に、make "command"を実行した後、ビルドフォルダーにあなたの名前がos(私の場合は "unix")のフォルダーが.pcファイル内にあります。

@Usernamezhx

「-D」オプションを忘れていませんか?

ドキュメントのように、-Dの後には常にスペースがあります。
-D OPENCV_GENERATE_PKGCONFIG = ON

しかし、スペースなしで書くことも明らかにうまくいきます:
-DOPENCV_GENERATE_PKGCONFIG = ON

以下は私のインストールスクリプトからの引用であり、cmakeの部分はopencv4.2.0で確実に機能します。 この見積もりは、決して完全なインストールスクリプトではありません。 その前にたくさんのライブラリを別々にインストールしているので、あなたはあなた自身の目的のためにあなた自身のスクリプトを作る必要があります。 Linuxでのインストールが完了するので、最後にldconfigを忘れないでください。 〜/ .bashrcでパスを編集する必要がある場合もあります。 最初にダウンロードしたものをopencvフォルダに移動してから...

mv opencv-4.2.0 opencv
cd opencv
mkdirビルド
CDビルド

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 FORCE_VTK = ON -D WITH_TBB = 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 OPENCV_EXTRA_MOD 。

make -j6
sudo make install
sudo ldconfig

opencv4.pcがどこにあるかを確認してください。

最初に家から2回、ずっと上に移動します。
cd ..
cd ..

次に:

sudo find -name opencv4.pc

あなたはこれでいくつかのpkgfoldersを見つけるはずです:

sudo find -name pkgconfig

お役に立てれば。

PS。 以前の投稿のcmakeのコピーは、改行のない単一の連続した行である必要があります。 手動で複数の行に分割する場合は、適切な改行を追加するだけです。
opencvが正しくインストールされていると思ったら、テストできます。まず、次のようにcppサンプルフォルダーに移動します。

cd〜 / opencv / samples / 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をインストールした後、同様の問題に直面し、CMakeLists.txtを使用してc ++プログラムをコンパイルする方法を見つけることができませんでした。 他のバージョンのOpenCVもインストールしていたので、コンパイラーへの特定のパスを提供する必要がありました。 pkg--configsが設定され、_ -D OPENCV_GENERATE_PKGCONFIG=YES _>を使用してOpenCVをビルドするための上記のソリューションのおかげでopencv4を識別できましたが、次のようにpkg-config.pcファイルパスを環境変数にエクスポートする必要がありました。
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/ubuntu/opencv/opencv4/lib/pkgconfig

バージョン3.4.4までのOpenCVでコンパイルした通常の方法は、 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コンパイルでき、すべてが完全に機能します。

また、CMakeLists.txtにfind_package( OpenCV 4.2.0 REQUIRED )を追加しました。 これが最善の方法かどうかはわかりませんが、他の人に役立つことを願っています。

こんにちは、
上記の提案を試しましたが( @dalilanderと@hardikparwanaのおかげで)、どれもうまくいきませんでした。 インストールは、Raspberry PI 4 ARMv7l、Centos7です。
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 = YES -D OPENCV_EXTRA_MODULES_PATH = / usr / local / src / open ..

次に、インストール手順に従いました。

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ビルド] $ 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

パスを自分のものに置き換えるだけです。

丁度!
なぜエクスポートしなかったのですか?
share /または/ libディレクトリにConfig.cmakeと呼ばれるそのようなファイルもConfig-version.cmakeもないためです。 それらはファイルシステム全体にさえ存在しません。 ちなみに、あなたの例はUbuntu用で、私のOSはCentos 7、ArchはarmV7Lです。
コマンドラインで「find」を実行しましたが、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--modversionopencv」は3.4.11を返すようになりました。

YUM pkgmanagerシステムからインストールした以前のバージョンのopenCVを持っているようです。

そのバージョンをクリーンアップし、4.2ソースからの新しいopenCVインシュレーションを最初から始めます。

ご多幸を祈る、

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

opencv-pushbot picture opencv-pushbot  ·  3コメント

opencv-pushbot picture opencv-pushbot  ·  3コメント

dpo picture dpo  ·  3コメント

orzzzl picture orzzzl  ·  3コメント

opencv-pushbot picture opencv-pushbot  ·  3コメント