如何在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顺序?的主要内容,如果未能解决你的问题,请参考以下文章