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无法使用。
如果有多个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 。 在我看来,对于大多数使用pkg-config用例而言,仅列出OpenCV所依赖的库以及有关标头和.so文件所在的信息就已足够。 还是在这方面有任何限制?

选项OPENCV_GENERATE_PKGCONFIG = ON生成“ .pc”文件。 我认为它也应该在使用pkg-config的* nix系统中默认生成。 我用ldd测试了我的二进制文件,它们链接正确。 可能会发生冲突的只是开发时间。 而且我认为cmake也可能出现相同的问题。 可能比-llib更具体。 可以通过.so文件精确指定lib。

CMakeLists.txt:

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

它不起作用

@codenoid我相信该选项的参数实际上是YES

ffmpeg依赖.pc文件来获取opencv库依赖关系,FWIW ...

另外请注意,即使生成了.pc文件,make也不会安装.pc文件:

另外请注意,即使生成了.pc文件,make也不会安装.pc文件:

您是否成功安装了.pc文件?

是的,我只是手动复制了它。

在2019年1月15日星期二下午2: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链接,则它将链接到没有版本号的库。
因此在3.4.3之后安装4.0.0-rc会使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下的任何位置。
我不能仅通过阅读pkg-config手册页来了解opencv4.pc应该去哪里-在/ usr / local下的某个地方,但是究竟在哪里?

也有同样的问题,其中make install没有复制超过opencv4.pc ,但是我使用发布页面中的4.1.0 zip。

@UberEclectic @ Kevin-Mok应该将opencv4.pc文件复制到/ usr / local / lib / pkgconfig。 不要忘记使用“ sudo ldconfig”,以确保正确考虑了最近安装的OpenCV库。 钢筋混凝土

我遇到了同样的问题,幸运的是我找到了这个线程,我必须同意,不是每个人都使用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文件!

这是我的方法FWIW opencv 3.4.5

do_make_and_make_install
cp unix-install/opencv.pc $PKG_CONFIG_PATH

在2019年4月29日星期一10:26上午s [email protected]写道:

是的,我只是手动复制了它。
…<#m_9070919798374828714_>
在2019年1月15日(星期二)下午2: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

如果在使用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中,它可以正常运行。 我在前面提供的命令中发现了错误。 需要使用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

如果在使用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。 我的项目之一(用C语言编写)使用'pkg-config opencv --libs'作为make选项之一。 有没有一种方法可以在不从此存储库进行cmake的情况下生成此opencv.pc? 我确实想在我的Arch上安装两个版本的opencv,一个由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中,它可以正常运行。 我在前面提供的命令中发现了错误。 需要使用ON,而不是YES。

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,但这里有更广泛的解释:

如果有多个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。 或进行安装。 两者都不起作用。
我放弃。 我将添加lib并将包含文件添加到makefile中。

在cmake选项中,您需要输入-DOPENCV_GENERATE_PKGCONFIG = ON
然后在执行make“ command”之后,您将在build文件夹中找到一个名为os的文件夹(在我的情况下为“ unix”),并且在.pc文件中

@Usernamezhx

您没有忘记“ -D”选项,对吗?

我在文档中-D之后总是有一个空格,例如:
-D OPENCV_GENERATE_PKGCONFIG = ON

但是在没有空格的情况下书写显然也可以:
-DOPENCV_GENERATE_PKGCONFIG = ON

以下是我的安装脚本的引文,cmake部分明确适用于opencv 4.2.0。 无论如何,此报价都不是完整的安装脚本。 在此之前,我有很多单独安装的库,因此您需要为自己的目的制作自己的脚本。 最后不要忘记ldconfig,因为这会在Linux上完成一些安装工作。 您可能还需要在〜/ .bashrc中编辑路径。 首先将下载的内容移至opencv文件夹,然后移至其他位置...

mv opencv-4.2.0 opencv
光盘opencv
mkdir构建
光盘制作

cmake -D CMAKE_BUILD_TYPE =发布-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 WITHC D WITH_XINE = ON -D BUILD_EXAMPLES = ON -D BUILD_PERF_TESTS = OFF -D ENABLE_PRECOMPILED_HEADERS = OFF .. 。

使-j6
须藤使安装
须藤ldconfig

检查您的opencv4.pc在哪里:

首先向上移动,两次在家中
光盘..
光盘..

然后:

须藤查找-name opencv4.pc

您应该找到一些pkgfolders与此:

须藤查找-name pkgconfig

希望这可以帮助。

PS。 我以前的帖子中的cmake副本必须是一个连续的行,且没有换行符。 如果要手动将其拆分为多行,只需添加适当的换行符即可。
一旦确定正确安装了opencv,就可以对其进行测试,请首先移至cpp samples文件夹,如下所示:

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,因此必须提供编译器的特定路径。 由于上面发布了使用_ -D OPENCV_GENERATE_PKGCONFIG=YES _构建OpenCV的解决方案,pkg--configs已设置并可以识别opencv4,尽管必须将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编译所有程序,并且一切正常!

我还在CMakeLists.txt中添加了find_package( OpenCV 4.2.0 REQUIRED ) 。 不知道这是否是最好的方法,但希望它能对其他人有所帮助!

你好,
我尝试了上述建议(由于@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 = YES -D OPENCV_EX / ON / C / EX / B / Build / B ..

然后,我按照安装步骤进行操作,

使-j4(在我的情况下是4)
须藤使安装
须藤ln -s /usr/local/lib64/pkgconfig/opencv4.pc / usr / share / pkgconfig /
须藤ldconfig
pkg-config --modversion opencv4

然后,它返回下面的错误

@Rasp build] $ pkg-config --modversion opencv4
在pkg-config搜索路径中找不到软件包opencv4。
也许您应该添加包含“ 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,所以share /或/ lib目录中都不存在Config-version.cmake。 它们甚至不存在于整个文件系统中。 顺便说一下,我注意到您的示例适用于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

最良好的祝愿,
一世

嗨,您好,
我找到了答案!
实际上,我发现了问题。 我发现符号链接分配了错误的方向

须藤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 pkg管理器系统安装的。

我将清理该版本,然后从4.2开始从头开始编写新的openCV。

最良好的祝愿,
一世

此页面是否有帮助?
0 / 5 - 0 等级