如何在qmake中设置libs顺序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在qmake中设置libs顺序?相关的知识,希望对你有一定的参考价值。

我们在使用qmake在Ubuntu Linux上构建C ++软件时遇到了问题。 问题是:我们使用一些库,例如OpenCV,它可以在一个系统中具有不同的版本。 qmake自动将-L / usr / lib或-L / usr / lib / x86_64-linux-gnu添加到g ++参数,以及之后的LIBS变量的内容。 因此,与OpenCV的不同版本存在冲突,使用系统版本,但我们需要自定义版本,位于构建树中。是否有任何方法可以在-L或其他方面更改libs顺序来解决此问题?

答案

这样做有两个组成部分:

首先,您需要确保将它们正确包含在.pro文件中。这样做(这是来自我当前的项目):

LIBS +=      L${OPENCV_HOME}/lib 
            -lopencv_core 
            -lopencv_highgui 

您可以使用您的路径替换环境变量。我发现使用这样的环境变量很方便,因为你还需要包括:

INCLUDEPATH += $$(OPENCV_HOME)/include/opencv2 
               $$(OPENCV_HOME)/include/opencv 
               $$(OPENCV_HOME)/include

这允许您创建项目并正确构建它们。

但是,当您尝试运行它们时,由于您的应用程序找到了错误的库(从您说的系统库),您可能会遇到各种问题 - 您需要正确设置LD_LIBRARY_PATH变量。在这种情况下,我有一个启动脚本(您可以在您的用户配置文件或其他地方执行此操作),其中包含:

export LD_LIBRARY_PATH=${OPENCV_HOME}/lib

然后,在系统库之前首先查看LD_LIBRARY_PATH上的那个(以及其他)位置。

另一答案

另一个黑客是利用Makefile qmake写的LIBS = $(SUBLIBS) ...部分。即,调用生成的Makefile

make SUBLIBS=-L/path/to/your/opencv
另一答案

通过将QMAKE_LIBDIR设置为构建树的lib目录,我遇到了同样的问题。 QMake自动在此值之后添加系统库路径,从而允许正确检测所需的库:

QMAKE_LIBDIR = /path/to/desired/opencvlib

以上是关于如何在qmake中设置libs顺序?的主要内容,如果未能解决你的问题,请参考以下文章

Qmake - 如何配置包含路径顺序?

如何在选项卡式活动中设置片段从右到左开始

如何在 iText 7 中设置 Tab 键顺序?

如何在运行时在由 android studio 创建的导航抽屉中设置默认片段

在片段中设置文本颜色

vscode中设置vue代码片段